编程星球——水·滴20180624期
[TOC]
2018/5/14
#水·滴# 微信开发调试两个有用的网页工具链接:
X5内核调试专用页 http://debugx5.qq.com/
X5内核调试专用页 (http://debugtbs.qq.com/
2018/5/16
Vscode下快速开始编写html的方法
- 首先在第一行输入!
- 然后将光标移动到!
- 最后,按下tab键 4.完成
2018/5/17
#水·滴# 使用 jdk9 运行报错:Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
原因:Java9以后JAXB APIs划分为Java EE模块,不再认为是SE模块,而默认的路径只包含了SE模块中。
方案1:
虽然路径没有包含,但是JDK中包含了EE模块,可以通过命令行参数添加需要的模块,例如:
--add-modules java.xml.bind
还有这些:
- java.activation
- java.corba
- java.transaction
- java.xml.bind << This one contains the JAXB APIs
- java.xml.ws
- java.xml.ws.annotation
如果9以下版本使用该参数会出错,可以使用-XX:+IgnoreUnrecognizedVMOptions命令行参数忽略,但使用该参数后会导致jvm不验证参数。最好是在脚本中检查版本在生成相应的命令行。
方案2:
mvn配置中添加插件:
<plugin>
<artifactId>maven-surefire-plugin<artifactId>
<version>2.20.1<version>
<configuration>
<argLine>--add-modules java.xml.bind<argLine>
<configuration>
<plugin>
方案3:
直接导入缺失的包:
<!-- Java 6 = JAX-B Version 2.0 -->
<!-- Java 7 = JAX-B Version 2.2.3 -->
<!-- Java 8 = JAX-B Version 2.2.8 -->
<dependencies>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.2.0</version>
</dependency>
</dependencies>
2018/5/21
#水·滴# Spring Data Query方法的属性表达式中,如果描述嵌入对象的属性,直接添加,例如:
List<Person> findByAddressZipCode(ZipCode zipCode);
相当于: x.address.zipCode 但有时可能会出现冲突或混淆,可以用下划线区分:
List<Person> findByAddress_ZipCode(ZipCode zipCode);
参考文档:Spring Data 之 Property Expressions
2018/5/22
#水·滴# Groovy变态的语法糖: 变量不加def,将变量添加到当前脚本的binding,一般看作全局变量。
x = 1
assert x == 1
assert this.binding.getVariable("x") == 1
def y = 2
assert y == 2
try {
this.binding.getVariable("y")
} catch (groovy.lang.MissingPropertyException e) {
println "error caught"
}
Prints: "error caught"
2018/5/24
#水·滴# 一个JavaWebApp多个实例部署在一个容器(Tomcat)报错:
Web app root system property already set to different value: 'webapp.root' = [C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\myapp] instead of [C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\myapp2] - Choose unique values for the 'webAppRootKey' context-param in your web.xml files!
解决方法,设置不同的webAppRootKey,避免冲突,例如:
<!--app1中的web.xml-->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>app1.root</param-value>
</context-param>
<!--app2中的web.xml-->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>app2.root</param-value>
</context-param>
2018/5/25
#水·滴# Python print 小窍门: end 参数用在print 函数中作用是打印一行并允许下一次打印在同一行继续。这是一个让 print 能够不在末尾打印出\n
(换行符)符号的小窍门。
2018/5/25
#水·滴# Win10 Linux Subsystem 路径:
C:\Users<username>\AppData\Local\Packages<group_name>\LocalState
- buntu: CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc openSUSE
- Leap 42: 46932SUSE.openSUSELeap42.2_022rs5jcyhyac
- SUSE Linux Enterprise Server 12: 46932SUSE.SUSELinuxEnterpriseServer12SP2_022rs5jcyhyac
2018/6/9
#水·滴# windows 下MongoDB服务配置安装:
- 编写Mongodb配置文件
systemLog:
destination: "file"
path: "c:\\data\\log\\mongod.log"
storage:
dbPath: "c:\\data\\db"
- 安装服务
"C:\Program Files\MongoDB\Server\3.6\bin\mongod.exe" ^
--config "C:\Program Files\MongoDB\Server\3.6\mongod.cfg" ^
--install
对于我是:
mongod --config "D:\Data\MongoDB\mongod.cfg" --install
2018/6/13
#水·滴# 微软在 4 月 18 那天发布了题为《Windows Command Reference》的 PDF 文档,内容达到了惊人的 948 页,全面覆盖了超过 250 个 Windows 控制台命令。
2018/6/13
#水·滴# Angular ng serve 时报错:
Could not resolve submodule for for routing:
原因路由配置问题:
export const ROUTES: Routes = [
{path: '', loadChildren: 'app/home#HomeModule'},
{path: '**', component: NotFoundComponent},
];
解决方法: 使用路由配置文件的相对路径,例如:
export const ROUTES: Routes = [
{path: '', loadChildren: './home#HomeModule'},
{path: '**', component: NotFoundComponent},
];
2018/6/14
#水·滴# Angular是目前最火的前端框架,常用的资源可以看官方网站:
链接:Angular Docs https://angular.io/resources
还有对应的中文网站:
链接:Angular Docs https://angular.cn/
另外,介绍几个我常用的第三方组件:
界面组件首选Ant: 链接:NG-ZORRO - Ant Design Of Angular https://ng.ant.design/
备选Primary: 链接:PrimeNG https://www.primefaces.org/primeng
还有官方的Material2: 链接:GitHub - angular/material2: Material Design compon...
移动端开发OnsenUI: 链接:Angular and AngularJS UI Components by Onsen UI Hy...
2018/6/14
#水滴# SqlServer从源表同步数据的语法:
--同步两个表的神奇语句
merge into TargetTable as t
using SourceTable as s
on t.id = s.id
when matched --源表和目标表存在同样ID是,更新目标表数据
then update set t.val=s.val
when not matched --目标表不存在源表数据,目标表插入源数据
then insert values(s.id, s.val)
when not matched by source --源表中不存在的数据,目标表删除
then delete;
一个实际的例子:
--同步两个表的神奇语句
merge into T_Site_Type as t
using (select * from T_Site_Type where Serial={Serial}) as s
on t.Serial = s.Serial
when matched --源表和目标表存在同样ID是,更新目标表数据
then update set t.TypeName = '雨水总排口监测点22211111'
when not matched --目标表不存在源表数据,目标表插入源数据
then insert (TypeId, TypeName, Serial) values(s.TypeId, s.TypeName, s.Serial);
when not matched by source --源表中不存在的数据,目标表删除
then delete;
2018/6/14
#水·滴# 一段代码演示一下Python的异常处理:
def except_test(num):
if num < 1:
raise Exception("我错了")
condition = 1
try:
except_test(condition)
except Exception as arg:
print("不好,发生异常")
print(arg)
else:
print("火箭发射正常")
finally:
print("收工")
2018/6/20
#水·滴# 基于maven的Kotlin和Java混合项目,如果需要设置不同的源码路径,可以使用build-helper-maven-plugin插件,例如:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>src/main/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
2018/6/21
#水·滴# 使用VS创建MVC Controller时报错:
EntityType 'XXXXX' has no key defined. Define the key for this EntityType。
可能是以下几种原因:
- 0、必须要有关键字属性;
- 1、属性名需为id,否则在上面使用[Key]注解;
- 2、关键字应为属性,不能是字段,没有get/set也会报错;
- 3、关键字需public;
- 4、关键字需要 CLS-compliant 类型,意味着无符号类型,如:uint, ulong 等等都不可以;
- 5、关键字名称冲突,如xId,yId等,需通过[Key]注解注明;
- 6、奇葩的一个,你新建实体类,但是没有build也会造成这个错误。
2018/6/21
#水·滴# C#类字段属性区别:
字段一般用在类的内部使用,属性一般供外部类访问。按照类的设计原则,字段都是private的,只能在类的内部使用,如果是public的,那么外部类谁都有可能访问,对字段进行破坏性的修改,这是我们不希望看到的,所以字段一定是private的。
属性相当于是给字段加了一个保护套,如果想读这个字段的值,属性里面走的一定是get{},如果想给字段赋值,属性里一定走的是set{},那么程序员可以在get{}和set{}中增加一些限制,验证要赋值的内容,或者让某个字段只能读不能赋值(对应该字段的的属性只让它有get{},不写set{})。对于外部使用者来说只能够使用它,不能控制它,如何控制操作是由类自身决定的(或者说是由程序员决定的,嘿嘿~)。
另外,字段值可以用作ref、out参数,而属性不能。
快问码.jpg 微信群20180704前有效.png