diff --git a/conf/application.xml b/conf/application.xml
index 6734711..5b42737 100644
--- a/conf/application.xml
+++ b/conf/application.xml
@@ -24,7 +24,7 @@
评论一个
',1521211118233,0,10),(23,100003,22,10,15,'
@nick
',1521212557156,0,10),(24,100003,23,10,15,'@nick
查看官方demo里面有,https://gitee.com/redkale/redkale-oss
\n 进一步完善,加入 求助/分享/...各个栏目\n[pre]\n社区基本功能已完成,可以简单的投入使用了\n欢迎围观、欢迎注册体验,
不知道现在版本nginx支不支持TCP的SSL, 如果支持的话那就不考虑实现SSL了
阅读目录
什么是HTTP基本认证
HTTP基本认证的过程
HTTP基本认证的优点
每次都要进行认证
HTTP基本认证和HTTPS一起使用就很安全
HTTP OAuth认证
其他认证
客户端的使用
>>>http协议基本认证 Authorization
\n
\n
【1.8.8】
【1.8.9】
《系统架构》 复杂系统的产品设计与开发
-----------------------------------------
什么是系统思维?
简单说,就是把某个疑问、状态、难题等明确的视为一个系统,是为一组相互关联的实体。(与 批判、分析、创新思维 思维模式并列)
如果完成一次系统思维的过程?
系统的定义:
系统是由一组实体和这些实体之间的关系所构成的集合,其功能要大于这些实体各自功能之和。
架构定义:
对系统中的实体和实体间的关系所进行的抽象描述
涌现是什么?
-系统运作时所表现、呈现或浮现出的东西
-各实体拼合成一个系统时,实体间的交互会把功能、行为、性能和其他内在属性涌现出来;系统的价值来源于涌现物的赋予,能够涌现预期属性的系统是成功的系统,反之亦然;另外除了性能外系统涌现涌现的属性包括:可靠性、可维护性、可操作性、安全性、健壮性等;
涌现原则:
整体大于其各部分之和。 ——亚里士多德
。。。。未完
idea 提示:\'F:/workspace/xxxx/pom.xml\' already exists in VFS
尝试方法:
1,查看A项目下是否已经xxx.xml或xxx.iml文件,将其删除
2,打开Project Structure 查看是否已经存在其子模块,将其删除
3,点击项目右键,选择Show in Exploer 在本地文件夹里打开,查看是否存在其子模块文件夹,将其删除。
4,点击File 选择 Invalidate Caches /Restarts... 选项,清理一缓存。
导致问题原因:
可能由于在建立 了模块时,选择了与其父模块一样的文件夹导致。
redkale在作为http服务器使用时,是如何处理session这块内容的?还是采用token方式验证,去掉session呢
',1523549060544,0,10,1,60,10,10,0,10),(19,100013,'maven将某个子模块下的资源移到到其它子模块下','','描述:
如何使用maven将A模块下的资源文件在打包时复制到B模块下。
配置信息:
需要在B模块下的pom.xml文件配置如下信息:
<build>
<resources>
<resource>
<directory>../A模块项目名称/src/main/resources</directory>
<filtering>true</filtering>
<includes> <!-- 包含的文件 -->
<include>*</include>
<include>*/*</include>
</includes>
<excludes><!-- 排除某些文件 -->
<exclude>*.properties</exclude>
</excludes>
</resource>
</resources>
</build>
找到FreeDos系统在硬盘上的虚拟文件的目录。修改后辍为.vmxf配置文件。添加如下内容:
bios.forceSetupOnce = \"TRUE\"
bios.bootDelay = \"10000\"
保存重启。注:每次启动完后,添加得这两个配置会消失,需要重新添加。
',1524128820960,0,20,0,54,10,10,0,10),(21,100013,'MongoDB提示:not master and slaveOk=false','','解决办法:
1、在mongo shell中执行rs.slaveOk()
来获取读取的权限。https://docs.mongodb.com/manual/reference/method/rs.slaveOk/
2、在连接时使用指定PRIMARY主机(使用集群方式连接)。如果使用MongoDB管理软件请查看是否有相关配置信息。如果使用命令行方式可以如下命令格式进行连接:mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
如:mongo mongodb://192.168.176.133:27018,192.168.176.135:27017/database?replicaSet=repset2
其中:192.168.176.133和192.168.176.135这两个ip是SECONDARY主机地址,连接后会自动切换到PRIMARY主机上(在连接时会自动查询配置信息,然后连接到PRIMARY主机上)replicaSet是集群名。
链接地址:https://docs.mongodb.com/manual/reference/connection-string/index.html
注:如果在连接过程中出现host2或某个域名出现未知主机异常UnknownHostException
时。请确定此集群在配置时进是否使用主机名映射。也就是否需要在本地修改hosts文件来添加映射关系。
2018-06-12更新
1. 用户资料加入[个人博客地址、码云/GitHub地址](部分用户开放设置)
2. 加入用户信息接口UF/UI,优化用户信息设置代码
2018-06-10更新
1. 个人中心-收藏数据不对
2. 管理员查询不到用户未公开帖子
3. 注册/资料修改 成功后未提示
4. 首页帖子用户头像链接地址错误
2018-05-12更新
1. 文章编辑加入未保存浏览器缓存
2. 文章编辑标题加入长度检查
方式一:
在webapp/WEB-INF目录下建立 一个lib文件,直接将jar复制到里面。然后修改pom.xml文件。
<dependency> \n <groupId>com.alipay.api</groupId> \n <artifactId>alipay-sdk-java20170324180803</artifactId>
<version>20170324180803</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/alipay-sdk-java20170324180803.jar</systemPath>
</dependency>
其中<scope>和<systemPath>标签最为重要,<scope>其值必须为system,<systemPath>为jar的位置。其它标签内容可自行定义。
方式二:使用maven-war-plugin插件
<dependency>
<groupId>com.alipay.api</groupId>
<artifactId>alipay-sdk-java20170324180803</artifactId>
<version>20170324180803</version>
<scope>system</scope>
<systemPath>${project.basedir}/local-lib/alipay-sdk-java20170324180803.jar</systemPath>
</dependency>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<warName>${project.artifactId}</warName>
<webResources>
<resource>
<directory>local-lib/</directory>
<targetPath>WEB-INF/lib</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
注:local-lib文件夹是在项目的根目录建立的。
方式三:使用resource标签,将jar移动到指定的目录
<dependency>
<groupId>com.alipay.api</groupId>
<artifactId>alipay-sdk-java20170324180803</artifactId>
<version>20170324180803</version>
<scope>system</scope>
<systemPath>${project.basedir}/local-lib/alipay-sdk-java20170324180803.jar</systemPath>
</dependency>
<resource>
<directory>${basedir}/local-lib</directory>
<includes>
<include>*.jar</include>
</includes>
<targetPath>${build.directory}/${build.finalName}/WEB-INF/lib</targetPath>
</resource>
注:其中<targetPath>标签内容占主要。也需要将方式一中的<dependency>标签内容添加到pom中。
说明:${变量名}这种是mave内置的一些变量。直接使用即可。其主要目标就是将jar移动到编译后的WEB-INF/lib目录下即可
',1527130015404,0,20,0,19,10,10,0,10),(24,100013,'mavn多工程只打包某一个工程','','命令:
maven package -DskipTests -pl sub-model-proejct -ad
说明:
1,执行命令的目录为父目录。
2,选项说明
-DskipTests:跳过测试
-pl:构建指定的反应堆项目而不是所有项目,后期跟项目名。也就是要构建项目中的pom文件中的<artifactId>标签中的内容
-am:如果指定了项目列表,还可以建立列表所需的项目(就是如果项目依赖于其它子项目也会一起构建)
3,maven版本在2.1版本以上。
4,maven相关更多命令可以查看mvn --help或到官网查看。
5,如果使用mvn package 命令来打包如果某一个项目模块下出现问题后,其实同级模块也无法进行打包。而这种方式只有在其依赖的项目模块出现问题后才会失败。
fastJson
处理含有下划线字段的坑
场景:
在ES
或者mongodb
数据库中,存入数据后,数据库会自动为我们的数据创建_id
字段,但是如果在查询的时候使用fastjson
做数据解析,
问题:
“_id”会被映射到“id”
解决办法:
将JavaBean中的字段多加一个“_” 也就是“__”',1527225649538,0,20,0,39,10,10,0,10),(26,100003,'Java的poi实现Excel导入导出【导出支持多个sheet,导入支持高低版本的excel】','','
本贴类型:
工具源码分享
场景:
在很多企业管理系统中都会碰到,excel的poi导入导出功能;需求很大,解决方案也很多,(不过我没用过别人的,喜欢用自己写的^_^,没毛病),
工具源码:
1、Excel导出支持多sheet: >>>快速使用<<<<
2、excel简单导入代码 [支持2007前后版本] >>>快速使用<<<<
功能描述:
导出:支持多sheet ,支持导出list<bean> list<Map> 写的比较糙,有相关需求的随便看看,参考着自己个儿改改用
导入:根据配置,导入得到List<Map>数据,可以自己实现List<JavaBean>的扩展(比如使用反射),支持2007前后版本Excel的处理
如有使用不明白的地方,可联系本人qq:168_52_537 (去掉下划线)
Redkale 入门教程:
02 -- REST敏捷开发 01 -- Hello Word!
Redkale 技术详解:
配置文件内容如下:
user=lxy
pwd=123
非常简单的Java代码(一看就会有木有):
Properties prop = new Properties();
File file = new File(\"conf/cfg.txt\");
prop.load(new FileInputStream(file));
prop.forEach((k,v)->{
System.out.println(k+ \"==\"+ v);
});
配置文件是我们项目中必不可少的东西,
在设计的代码结构的过程中,公共部分通常封装、抽取为方法;
其他部分呢,要么来源数据库,要么来源用户输入,要么来源于文件(配置文件),运行代码再加载配置;这时候这段代码就能为我们很好的工作
作者:lxy
QQ :168_52_537
windows:当前用户目录下的_ideavimrc
Linux::当前用户目录下的.ideavimrc
Java学习 set classpath的小结
2018年05月24日 13:52:15
阅读数:5
我们知道javac命令在编译的时候查找类是按照classpath的路径去寻找,如果找不到,就在当前路径下寻找,如果还是找不到,就会报错。
我们可以使用set classpath来查看我们的路径是什么
这其中有三个路径,第一个是‘.’就是当前路径,后两个都是系统类包路径
如果我们临时需要设置一个路径,我们可以开启一个命令行窗口
使用set classpath = 路径名就修改了。
如果我们只是想在原有路径基础上,再加上一个路径我们可以这样:
%classpath%就是原有的路径,前面加上分号与追加的路径隔开。
注意:
我们所使用的set classpath=路径名
是临时设置的,只在当前的黑屏幕cmd有用,一旦退出,恢复以往路径。
个人分类: java
D:\\hao zun cheng\\Documents\\java演示操作>cd/
D:\\>java Hello
Hello World!
D:\\>c:
C:\\>set classpath=d:
C:\\>java hello
错误: 找不到或无法加载主类 hello
C:\\>set classpath
CLASSPATH=d:
C:\\>java Hello
Hello World!
C:\\>
111.0
java基础
软件开发
软件:一序列按照特殊顺序组织的计算机数据和指令的集合。软件;系统软件(windos,linux,Dos),应用软件(qq,扫雷)
开发:软件的开发,制作软件
。 软件实现了人机交互
人机交互
图形化界面
命令行方式(需要一个控制台,输入特定的指令来完成操作
计算机语言
人机沟通的方式c,,,c++,,,java...
java语言是面向internet的编程语言。
java语言的三种技术架构(技术分支):java EE java SE java ME .
java语言的关键特性:1 简洁有效 2 可移植性 3 面向对象 4 解释型 5 适合分布式运算
java的跨平台性:
java可以在不同的平台运行(windois linux mac [苹果系统])
通过JVM(java虚拟机)jvm不能跨平台,不同的系统装不同的jvm.
JVM是JAVA虚拟机,它将.class字节码文件编译成机器语言,以便机器识别!
JDK与JRE(JDK开发工具包,JRE运行方式)
dos中常用的命令:[help]
dir:
md: rd: del: cd: cd.. cd\\ exit cls(清屏)
环境变量的配置
Hello World 的演示
set classpath的使用
111.1
java语言基础
组成 :段 大括号 主体
public class TestJava{ //public:表示该类公有,整个程序的可以访问
如果将一个类声明成public,则文件名和这个类名要一致
在一个java文件里,最多只能有一个public类,否则.java的文件便无法命名。
public static void main(String[]args){ //程序运行的起点,主函数main() main()method主方法
int num = 3;// 声明变量num,赋值为3. 使用变量前必须先声明
System.out.println(num);//标准输出 打印到标准输出设备-显示器
}
}
1.关键字
2.标识符
在程序中定义的一些名称。
由26个英文字母大小写,数字:0—9,符号:_$ 组成。
定义标识符的规则:1 数字不可以开头2 不可以使用关键字
3.注释
java中的注释格式:
单行注释://
多行注释:/* * /
文档注释:/** */
操作: HEllo WOrld! 的演示
可用于程序的检测
语法错误 语义错误
提高程序的可读性:注释 缩进
111.2
java基础 常量与变量
1.常量
代表不能改变的数值。
常量的分类:
1 整数常量 所有整数
2小数常量 所有小数
3布尔(boolean)型常量 两个 true false(真假)
4字符常量 将一个数字,字母或符号用单引号(\'\')标识。
5字符串常量 一个或多个字符 用双引号(“”)标识。
6 null常量(空常量) 一个 null
对于整数有四种表现形式: (进制表示计数方式)
二进制 八进制(用0开头) 十进制 十六进制(用0x开头表示)
进制的转换,运算
2. 变量
内存中的一个存储区域。
该区域有自己的名称(变量名)和类型(数据类型)。
该区域的数据可以在同一类型范围内不断变化。
定义变量是为了用来不断的存放同一类型的常量,并可重复使用。
使用变量注意:
变量的作用范围(一对{}之间有效)
初始化值
定义变量的格式: 数据类型 变量名=初始化值
▲ 声明一个变量,并给这个变量赋值。▼先声明才能使用!
变量的三种设置方式:
在声明变量时设置/ int num = 3;
声明后在设置 / int num ; num = 3;
在程序的任何位置声明并设置 /
数据类型:
基本数据类型 数值型:整型(byte int short long ) 浮点型(double双精度浮点型 folate)
布尔型boolean: true false
字符型 char
引用数据类型 类(class) 数组 接口(interface)
整数默认 int 小数默认 double
111.3
运算符
1.算术运算符 + - * / %(取余,模运算)( + 字符串之间的+,用于连接作用:\"a+b=\"+(a+b)+\",b=\"+b , 3+\"2\" ) a++ a--:递增递减
2.赋值运算
3.比较运算 == !=
比较运算符,运算完后的结果必须是true或false。
4.逻辑运算
用于连接两个boolean类型的表达式。(2<x<5, x>2 & x<5)
&:与 |:或
&运算特点:只要有一边为false,结果为false
只有两边都为true,结果才为true. true & true= true
|运算特点:只要有一边为true,结果为true
只有两边都为false,结果才为false.
^ 异或,true^true=false,和或有点不同
^的运算特点:^符号的两边结果如果相同,结果是false
两边的结果不同,结果是true.
!非运算,判断事物的另一面。
!true=false; !false=true.
&& 双与与 运算,左边为false 右边不在做运算(和&相比更高效)
||
5.位运算 用于二进制运算的符号(6&3 6^3^3=6 一个数异或同一个数两次,结果还是这个数)
&运算 |运算 ^运算 反码运算~6=-7(-7+1=-6)
移位运算 <<左移 >>右移 >>>无符号右移
3<<2 3左移两位3*2*2(移几位就这个数乘以二的几次方)右移改除 同理 》》:对于高位出现的
空位,是什么就用什么补,负数还是负数
>>>:无符号右移,数据进行右移时,高位出现的空位,无论原高位是什么,空位的用0补。负数变正数。
6.三元运算
格式 (条件表达式)?表达式1:表达式2;
如果条件为true,运算结果为表达式1.
如果条件为false,运算结果为表达式2.
表达式:
由操作数与运算符组成。操作数可以是常量 ,变量,也可以是方法。
111.4 程序流程控制 ---判断结构 选择结构 循环结构 顺序结构
判断结构 If语句 三种格式:if(条件表达式)
{执行语句}
if(条件表达式) if(条件表达式)
{执行语句}; {执行语句};
else else if(条件表达式)
{执行语句}; {执行语句};
.....
else (条件表达式)
{执行语句};
局部代码块可以定义一个局部变量的生命周期。
一,开启自动导入包功能
一、六大设计原则
1. 单一职责原则
2. 里氏替换原则
3. 依赖倒置原则
4. 接口隔离原则
5. 迪米特法则
6. 开闭原则
二、设计模式
7. 单列模式
8. 工厂方法模式
9. 抽象工厂模式
10. 模板方法模式
11. 建造者模式
12. 代理模式
13. 原型模式
14. 中介者模式
15. 命令模式
16. 责任链模式
17. 装饰模式
18. 策略模式
19. 适配器模式
20. 迭代器模式
21. 组合模式
22. 观察者模式
23. 门面模式
24. 备忘录模式
25. 访问者模式
26. 状态模式
27. 解释器模式
28. 享元模式
29. 桥梁模式
以下内容来源<redkale 技术交流群>
整理下来逐一领会,感谢张老师(redkale作者)的指导
\nRedkale<redkale@qq.com> 8:58:13
表命名最好能让人一目了然, 除了表现出内容还要能表的数据模型
-----------
Redkale<redkale@qq.com> 9:04:07
比如我的设计习惯:
xxxrecord表示流水型的数据, 数据量会很大, 通常需要分库分表, 如:payrecord、loginrecord
xxxinfo,xxxdetail表示内容型数据, 数据量可大可小(中短期内不会分表),如:userdetail(用户表)、orderinfo(订单表)
xxxconfig 表示配置型数据,数据量有限。\n-----------
Redkale<redkale@qq.com> 9:06:54\n
而且你的表名也体现不出所属模块来
这些设计细节其实很重要, 比文档重要得多, 只要你能做到别人看你表结构就能读懂业务逻辑就说明合格了\n\n-----------\nRedkale<redkale@qq.com> 9:08:57\n你看redkale-demo、redkale-oss, 每个表名的前缀就是模块名, 这样别人看表名就知道这个表在哪个模块,被哪个Service调用\n------\n\n
Redkale<redkale@qq.com> 9:11:19状态字段最好都用smallint 也就是short Redkale<redkale@qq.com> 9:11:59别人一看short字段就知道是状态字段或者枚举值字段\n\n
Redkale<redkale@qq.com> 8:58:13
表命名最好能让人一目了然, 除了表现出内容还要能表的数据模型
Redkale<redkale@qq.com> 9:04:07
比如我的设计习惯:
xxxrecord表示流水型的数据, 数据量会很大, 通常需要分库分表, 如:payrecord、loginrecord
xxxinfo,xxxdetail表示内容型数据, 数据量可大可小(中短期内不会分表),如:userdetail(用户表)、orderinfo(订单表)
xxxconfig 表示配置型数据,数据量有限。
Redkale<redkale@qq.com> 9:06:54
而且你的表名也体现不出所属模块来
这些设计细节其实很重要, 比文档重要得多, 只要你能做到别人看你表结构就能读懂业务逻辑就说明合格了
绝尘(237809796) 9:07:46
好,从表结构 表名开始再加强升级
绝尘(237809796) 9:08:50
最好能不用文档,每个人都能看懂入门redkale
Redkale<redkale@qq.com> 9:08:57
你看redkale-demo、redkale-oss, 每个表名的前缀就是模块名, 这样别人看表名就知道这个表在哪个模块,被哪个Service调用
绝尘(237809796) 9:09:50
嗯
Redkale<redkale@qq.com> 9:11:19
状态字段最好都用smallint 也就是short
Redkale<redkale@qq.com> 9:11:59
别人一看short字段就知道是状态字段或者枚举值字段
绝尘(237809796) 9:13:03
@Redkale 好,认真改善
绝尘(237809796) 9:13:19
Redkale<redkale@qq.com> 9:13:37
还有主键, 一个表里最重要的就是主键字段, 应该注释更详细点
Redkale<redkale@qq.com> 9:13:51

Redkale<redkale@qq.com> 9:15:38
这样以后如果要分库分表, 别人一看注释就知道这个表的数据能按什么维度分表
Redkale<redkale@qq.com> 9:16:10
比如这个回合表, 就只能按日期时间、userid、nodeid分表, 不能分其他维度了
Redkale<redkale@qq.com> 9:17:32
这样新人上手成本很低, 只要将一遍所以的设计规范就知道了, 不用每个功能对着数据表、代码看, 而且每个人的风格不一样, 看起来更头大
Redkale<redkale@qq.com> 9:19:19
你的`createTime`, 一会 bigint、一会date 一会 timestamp
Redkale<redkale@qq.com> 9:20:58
状态字段禁止使用0表示由意义的值
Redkale<redkale@qq.com> 9:21:12
你这样过滤查询会很蛋疼
Redkale<redkale@qq.com> 9:21:35
传0,redkale会认为不过滤
绝尘(237809796) 9:21:49
确实有这个痛点
文(1101001213) 9:22:25
0一般都是初始值
Redkale<redkale@qq.com> 9:22:27
你是不是觉得存0比存1少占硬盘空间 ]9PGF.gif\")
追梦(40839292) 9:22:29
对于枚举,状态等,通常0保留
绝尘(237809796) 9:22:29
从1开始,这样就解决了吧
绝尘(237809796) 9:22:46
@Redkale 一样的吧
IT小萌新(373038132) 9:22:56
主要是int的初始值是0
立立✌️(853089986) 9:23:09
你们在做什么项目啊
文(1101001213) 9:23:14

Redkale<redkale@qq.com> 9:23:37
用short, 有3万多, 你就不能大方点, 用 10 20, 非要1/2
IT小萌新(373038132) 9:23:37
不过老大设计表的时候确实很讲究
IT小萌新(373038132) 9:23:39
厉害
文(1101001213) 9:23:54
我喜欢
文(1101001213) 9:23:57
10 20
Redkale<redkale@qq.com> 9:24:24
用10 20 ,这样中间还可以穿插意义相近的状态
文(1101001213) 9:24:26
因为动不动业务变更 才好往里面加
追梦(40839292) 9:24:39
群主一看,就是带头做过项目的
绝尘(237809796) 9:24:46
有个地方我也用上10 20了
文(1101001213) 9:24:58
跟分配菜单排序一样的道理
IT小萌新(373038132) 9:25:33
嗯 受教了
绝尘(237809796) 9:26:10
群主是干 CTO的,才赖得带项目呢
Redkale<redkale@qq.com> 9:26:19
比如你设计 1:正常、2:删除; 以后业务发展,加其他几个状态。 3:审批、4冻结 你看这值顺序不觉得别扭了
用10, 20. 10:正常; 20:删除; 以后加: 12:审批; 14:冻结, 这样后续还可以再扩展
文(1101001213) 9:26:58
对的
绝尘(237809796) 9:27:00
嗯,信息量好大,得好好吸收
绝尘(237809796) 9:27:24
回头一一改进
追梦(40839292) 9:27:27
马屁拍的响@绝尘 ![\"[污]\"](\"http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/3c/pcmoren_wu_org.png\")
文(1101001213) 9:27:30
但是要是用上流程引擎的话 就是另一回事
追梦(40839292) 9:27:47
群主受用的啊
Redkale<redkale@qq.com> 9:28:56
用户没输入的信息最好都为空, 你默认为男, 以后数据分析, 你根本不知道用户是真的设置为男,还是系统默认赋值的
绝尘(237809796) 9:29:18
我是发自内心的好不好,@追梦
IT小萌新(373038132) 9:29:49
群主思维很缜密
绝尘(237809796) 9:29:51
对
IT小萌新(373038132) 9:29:58
不愧是数学常年满分的![\"[神马]\"](\"http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/60/horse2_thumb.gif\")
中国-虾米(1462996820) 9:30:05
布尔的 列 为啥不用 true/false。
文(1101001213) 9:30:07
空的话 null建议不要
Redkale<redkale@qq.com> 9:30:49
除了text、blob, 其他常规字段都不能为null, 特别是number字段
绝尘(237809796) 9:30:52
@中国-虾米 布亇只有两个值
追梦(40839292) 9:30:56
嗯,不要用null,处理起来麻烦
绝尘(237809796) 9:31:09
扩展就废了
Redkale<redkale@qq.com> 9:31:20
我的表结构里没有boolean类型, 都是short
中国-虾米(1462996820) 9:31:40
只能是 0和1
文(1101001213) 9:31:41
特别是 统计查询 还有数据分析时 null的时候 你会发现好烦
中国-虾米(1462996820) 9:31:50
要是 short 还可以其他
中国-虾米(1462996820) 9:32:01
为啥 不用 bit\n
\nRedkale<redkale@qq.com> 9:32:14
如果是可叠加的状态值, 最好设计成1/2/4/8/16 这样 位运算可以叠加
文(1101001213) 9:33:26
get了
Redkale<redkale@qq.com> 9:34:26
以前有些表字段, isHide、isDel、isRead, 看着都急死
文(1101001213) 9:34:54
条件太多 有时自己都乱
Redkale<redkale@qq.com> 9:35:12
初级感扑面而来
绝尘(237809796) 9:35:16
感觉被扒光了,站在大街,但这些都是老大青春换来的经验,值得认真思考和学习 ![\"[污]\"](\"http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/3c/pcmoren_wu_org.png\")
绝尘(237809796) 9:35:30
很爽
Redkale<redkale@qq.com> 9:35:42
还没看你代码呢
追梦(40839292) 9:35:43
群主,现在在干嘛?
龙飞在天(121156) 9:35:51
@Redkale 老大,为啥不建议用tinyint呢?
文(1101001213) 9:36:20
他在给他分析 数据库设计 代码规范@追梦 @绝尘
Redkale<redkale@qq.com> 9:37:35
tinyint 对应 byte, 现在什么年代了, 还计较1个字节和2个字节的差距吗, 统一short最简单
Redkale<redkale@qq.com> 9:38:57
现在数据库很多类型我都忘了, 只需要知道常见的类型就够用了
mysql8 没到生产环境的量 也不知道性能好在哪些地方
Redkale<redkale@qq.com> 9:41:48
装过mysql8, 又还原5.7了, jdbc驱动变动太大了
Redkale<redkale@qq.com> 9:44:16
然后呢, 你很需要这个特性吗
Redkale<redkale@qq.com> 9:45:38
目前没碰到常规关系型数据库设计搞不定的数据类型
Redkale<redkale@qq.com> 9:50:24
做后台要多花时间思考表设计, 这个层面是很少变化的, 如果用大量时间在花哨的API层面,过两年不流行了就得跟着新框架屁股后面跑
Redkale<redkale@qq.com> 9:52:15
特别是通才后台开发者, 表、代码、页面都一个人做。 如果是专长的另当别论
Redkale<redkale@qq.com> 10:03:07
表名和类名是一样的吗
表名通常与业务领域模型一致
Redkale<redkale@qq.com> 10:08:01
类名本身就要有模块前缀
背景需求:
一个查询参数,查询全站数据
场景一:网站首页的搜索,一个搜索框要查询整个网站中相关的数据,
处理这个需求有两个步骤:
场景二:管理后台,一个输入框输入一个自己的表达式,精确匹配出相关数据,
这种场景的数据处理流程:
下面主要介绍的是一个场景二的代码案例:
查询字符串:
String str = \"字符1 && 字符2 && 字符3 || 字符4 && 字符5 || 字符6\";
处理得到结果:
and ((title=? and title=? and title=?) or(title=? and title=?) or(title=?))
[\"字符1\",\"字符2\",\"字符3\",\"字符4\",\"字符5\",\"字符6\"]
Java字符串处理:
public static String r(String str){
StringBuffer sql = new StringBuffer();
List<String> para = new ArrayList<>();
sql.append(\" and (\");
for (String x : str.split(\"[|][|]\")) {
sql.append(\"(\");
for (String t : x.split(\"&&\")) {
sql.append(\"title=? and \");
para.add(t.trim());
}
sql.delete(sql.length()-5, sql.length());
sql.append(\") or\");
}
sql.delete(sql.length()-3,sql.length());
sql.append(\")\");
Gson gson = new Gson();
System.out.println(sql.toString());
System.out.println(gson.toJson(para));
return sql.toString();
}
另外注意,Java中的 竖线分割应该如下使用
str.split(\"[|]\") 或者 str.split(\"[|][|]\")
更多个性查询规则,可相应定制,
Java打包压缩包,简单代码如下:
//文件压缩到zip
public static void run_a() throws IOException {
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(new File(\"hello.zip\")));
BufferedOutputStream bos = new BufferedOutputStream(zos);
List<String> files = asList(\"log.txt\");//文件列表
for (String fileName : files) {
File file = new File(fileName);
ZipEntry zipEntry = new ZipEntry(\"file/\" + file.getName());
zos.putNextEntry(zipEntry);//设置即将用来写的文件
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
int read;
while ((read = bis.read()) != -1){
bos.write(read);
bos.flush();
}
}
zos.close();
}
可拷贝到自己代码中,main方法中运行,看看效果,
更多个性化使用,自行定制,
源码可到 我的gitee 账号下 demo---> jdk-demo---> zip
查看
端午假期,好多人都去旅游了;对于我旅游并不抱着多大的兴趣,唯爱写代码,以构思程序写代码为生活最大的快乐;这就像我中学时候喜欢物理,学习物理,思考物理现象就是最好的休息,一去想那些宇宙世界奥妙的奇特就感觉特别爽,特别能找到感觉;这可能和我对事的态度有关吧,总想把自己所做的事情,做的很好(很有感觉),做的很有感觉,犹如厨房里面切菜,犹如玻璃厂苦累的不抱怨,犹如电子厂装配车间装配零件,。。。;
我用心思索,我努力前进,最后就是要找到一个感觉;成就感,操控欲,亦或者更大的成功;这个说不清道不明的感觉;
/*1~100之间六的倍数出现的次数
x%6=0,六的倍数
*/
public class WhileTest1{
public static void main(String[] args){
int x = 1;
int num = 0;
while(x<=100){
if(x%6==0){
num++;
System.out.println(x);
}
x++;
}
System.out.println(\"num=\"+num);
}
}
在文艺复兴和巴洛克风格之间,有一个容易被忽视的流派,他们追求变化和夸张,突破了作品一定要“完美、优雅”的限制,它被称为矫饰主义。
何为矫饰主义
14-17世纪的文艺复兴时期,在一般大众心目中,它几乎一度成为了西方艺术的代名词,《蒙娜丽莎》《最后的晚餐》《大卫》……这些名作都出自这个时期,它崇尚的是一种均衡稳定、优雅和谐之美。
达·芬奇《最后的晚餐》
在文艺复兴晚期,画家们对这种理性美感到了“审美疲劳”,且觉得在这种画法上很难再超越文艺复兴的那些大师们,根本无法施展自己的拳脚、展现自己的才华。于是,他们便有意识地创造新风格,组成了一个新的画派,创作那些惊人的、富有幻想的作品——“矫饰主义”就由此出现了。
格列柯作品
“矫饰”一词源于意大利语Maniera,意为“风格”,在中文翻译上很容易让人与“矫情”等负面词汇联系到一起,因此很多人对这个画派产生了误解。
事实上,这个画派也的确很长一段时间内在西方美术史上饱受非议,它曾被认为是文艺复兴渐趋衰落后出现的一种故意追求造作形式的画派。直至后来经过很长一段时间的研究,矫饰主义才被客观地界定为是一个全新、独立且有着很大影响力的流派。
布龙齐诺《托雷多的肖像》,1560年
矫饰主义的特征十分明显,主要表现为拉长的人体比例、不平衡的姿势、丰富夸张的表情,以及缺乏清晰的透视。在绘画的色彩上,矫饰主义一改文艺复兴时期的沉闷色调,色彩更加丰富、艳丽,还常常有一些怪异的光影效果。除此之外,在绘画题材上也多是偷窥、阴谋等相对晦涩的话题。
总的来说,矫饰主义就是毫无章法地去创造和追求一种“视觉的惊奇”。
帕米贾尼诺《圣保罗的皈依》
布龙齐诺作品
画家帕米贾尼诺的这幅《长颈圣母》可以说是矫饰主义画作的典范之一。在这幅画中,我们依旧可以感受到拉斐尔式圣母的优美,却又有着截然不同的艺术处理。
帕米贾尼诺《长颈圣母》
画面中人物的肢体都被拉长,即使是圣母手中的婴儿,也被拉到了4、5岁儿童身高的长度。艺术史家贡布里希认为,帕米贾尼诺故意加长了圣母的脖子,以形成优雅的姿态。画家似乎有意阻止我们用日常经验的标准去衡量画中的一切。
帕米贾尼诺《长颈圣母》局部
其实,在拉斐尔和米开朗基罗的中后期作品中,我们也可以看到矫饰主义的影子。他们在绘画、雕塑中追求更多的肢体动作上的变化和夸大的情绪反应,这些都与早期的矫饰主义艺术家的作品有着很高的相似之处。
米开朗基罗《昼》
说到矫饰主义,就不得不提到艺术家蓬托尔莫。他于1494年出生在意大利,是一位虔诚的宗教画家,他曾前往佛罗伦萨学画。起初,在他的早期作品中还可以看到达·芬奇、米开朗基罗等大师的影子。在他遗留下来的日记中人们发现,他对自己的工作充满着热情,但是内心呈现的状态却是十分孤独、敏感的。
蓬托尔莫《Madonna and Child with the Young St John the Baptist》
1512年,蓬托尔莫在画家沙托的门下工作时,遇到了画家罗索,由于年龄和兴趣爱好都相仿,二人很快便成为了朋友。
蓬托尔莫作品
罗索也曾在佛罗伦萨等城市工作,且艺术上受到米开朗基罗很大的影响。但是后来,罗索和蓬托尔莫二人都背离了文艺复兴兴盛时期的艺术原则,共同转向了对矫饰主义作品的创作。
罗索作品
蓬托尔莫的作品《基督被接下十字架》被誉为矫饰主义发展的核心之作。在这幅作品中,虽然表达的主题十分神圣,但是人物塞满了整个画面,人物的比例被明显拉长,且蓬托尔莫刻意压缩了画面的透视深度。画中人物的神情,每个人的脸上都带有一种焦虑感和紧张感。可以说,整幅作品与古典主义那种稳重、理性的风格完全迥异。
蓬托尔莫《基督下十字架》
但不可否认的是,蓬托尔莫的画作在色彩和设计上总能给人留下深刻的印象,比如下面这幅著名的油画《在埃及的约瑟夫》。
《在埃及的约瑟夫(Joseph in Egypt)》,1515-1518年
另外一位被称作现代绘画之父——格列柯,也同样是矫饰主义的代表人物。他的画作以弯曲瘦长的身形为特色,用色怪诞而变幻无常。在作品《天使报喜》中,人物同样遵循了矫饰主义一贯的风格——即身体被拉长。除此之外,人物背后的光影表现也一反传统绘画,明暗对比强烈,使画面充满了神秘的光芒。
埃尔·格列柯《天使报喜》,布面油画,66.5×91cm,1595年
风格影响
矫饰主义风格不仅仅体现在绘画上,作为一种风潮,它在建筑和雕塑中也同样有所体现。文艺复兴时期的建筑讲究秩序和比例,拥有严谨的立面和平面构图以及从古典建筑中继承下来的柱式系统。当时的建筑师们认为,古典柱式构图体现着和谐与理性,并同人体美有着相通之处。
维琴察圆厅别墅
矫饰主义建筑中最典型的一个例子就是位于罗马郊区的法尔尼斯别墅。
我们可以明显地看出,矫饰主义建筑追求的是一种怪诞的效果,不求整体的宏伟和雄壮,且有意地与建筑周围简陋的环境形成鲜明的对比。
法尔尼斯别墅
矫饰主义从16世纪下半叶至17世纪初,总共持续了仅仅半个世纪,无论是与前面的文艺复兴相比,还是与后面的巴洛克风格相比,都好像“差点意思”。但正是因为有矫饰主义艺术家们对突破和超越的追求,才为巴洛克风格搭建了一个稳固的阶梯。这世界上,没有绝对的稳定优雅之美,那些“矫揉造作”或许更能带来新的灵感。
有盐APP给大家送福利啦,现在加入“有盐1001种生活”微信群,就可以:
随时抢到DIY、插花、陶艺、音乐、戏剧、亲子等活动优惠券和大红包哦!!
第一时间Get各种好玩又不贵的活动!!
'),(2,1,'cover','http://upload.art.ifeng.com/2017/0908/1504837717810.jpg'),(100001,1,'abc','def'); -/*!40000 ALTER TABLE `sys_dynattr` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `sys_userrecord` --- - -DROP TABLE IF EXISTS `sys_userrecord`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `sys_userrecord` ( - `userid` int(11) NOT NULL COMMENT '[用户id]', - `username` varchar(32) NOT NULL COMMENT '[登录名]', - `password` varchar(64) NOT NULL COMMENT '[密码]', - `sex` smallint(6) DEFAULT NULL COMMENT '[性别] 10男,20女', - `phone` varchar(32) NOT NULL COMMENT '[电话号码]', - `nickname` varchar(64) DEFAULT '' COMMENT '[昵称]', - `avatar` varchar(128) DEFAULT '' COMMENT '[头像地址]', - `realname` varchar(32) DEFAULT '' COMMENT '[真实姓名]', - `email` varchar(32) DEFAULT '' COMMENT '[邮箱]', - `roleid` int(2) NOT NULL DEFAULT '0', - `site` varchar(128) DEFAULT '' COMMENT '[个人博客地址]', - `git` varchar(128) DEFAULT '' COMMENT '[码云/GitHub]', - `createtime` bigint(20) NOT NULL COMMENT '[创建时间]', - `sign` varchar(256) NOT NULL DEFAULT '' COMMENT '[签名]', - `city` varchar(64) NOT NULL DEFAULT '' COMMENT '[所在城市]', - `status` smallint(6) NOT NULL DEFAULT '10' COMMENT '[状态]-10删除 10正常', - PRIMARY KEY (`userid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `sys_userrecord` --- - -LOCK TABLES `sys_userrecord` WRITE; -/*!40000 ALTER TABLE `sys_userrecord` DISABLE KEYS */; -INSERT INTO `sys_userrecord` VALUES (100001,'@1216.top','fcea920f7412b5da7be0cf42b8c93759',10,'18515190967','绝尘','http://img.1216.top/art/u93.png','','admin@1216.top',1,'http://1216.top','https://gitee.com/tc608',1507677533071,'','云南',10),(100002,'237809797@qq.com','fcea920f7412b5da7be0cf42b8c93759',20,'13121880915','晓','http://img.1216.top/art/u36.png','','237809797@qq.com',0,NULL,'',1509196823551,'','',10),(100003,'237809796@qq.com','fcea920f7412b5da7be0cf42b8c93759',10,'','nick','http://img.1216.top/bbs/20171203103651.gif','','237809796@qq.com',1,NULL,'',1511851218332,'态度决定高度。','',10),(100004,'vip@qq.com','25d55ad283aa400af464c76d713c07ad',10,'','qq','/res/images/avatar/3.jpg','','vip@qq.com',0,NULL,'',1512954927558,'','',10),(100005,'12@qq.com','e10adc3949ba59abbe56e057f20f883e',10,'','123','/res/images/avatar/13.jpg','','12@qq.com',0,NULL,'',1512957064362,'','',10),(100006,'10000@qq.com','0d124d13699173f26a6519631cfe6e52',10,'','na','/res/images/avatar/9.jpg','','10000@qq.com',0,NULL,'',1512987234013,'','',10),(100007,'syy@qq.com','6fb327cfe8bd8268d7e1a8468d88e8d2',10,'','syy','/res/images/avatar/13.jpg','','syy@qq.com',0,NULL,'',1513305537321,'','',10),(100008,'555@qq.com','5b1b68a9abf4d2cd155c81a9225fd158',10,'','555','/res/images/avatar/19.jpg','','555@qq.com',0,NULL,'',1513355350396,'','',10),(100009,'2442669938@qq.com','25f9e794323b453885f5181f1b624d0b',10,'','iLvc','/res/images/avatar/10.jpg','','2442669938@qq.com',0,NULL,'',1513512637440,'','',10),(100010,'316034712@qq.com','af73fabc0e20d29ce37ad7bb66e7a4ff',10,'','OoxiaobinoO','/res/images/avatar/4.jpg','','316034712@qq.com',0,NULL,'',1513840912828,'','',10),(100011,'dsfds@qq.com','614ac7c72e24ff3f38f9f3fc7bdb85ad',10,'','znm','/res/images/avatar/0.jpg','','dsfds@qq.com',0,NULL,'',1519973503109,'','',10),(100012,'aaa@qq.com','d9f6e636e369552839e7bb8057aeb8da',10,'','aaa','/res/images/avatar/11.jpg','','aaa@qq.com',0,NULL,'',1519973543625,'','',10),(100013,'ceilingsliuce@163.com','09528b3dc71191355493ffdc7d2ad592',10,'','darkleo','http://img.1216.top/redbbs/20180416092232.jpg','','ceilingsliuce@163.com',1,NULL,'',1523251835728,'原本安静的环境,突然变得喧闹了。','帝都',10),(100014,'qkmc@outlook.com','f0dc2ec24679fae04aeb9b2c86b5ffdf',10,'','mrruan','http://img.1216.top/redbbs/20180413000231.jpg','','qkmc@outlook.com',0,NULL,'',1523548897975,'','',10),(100015,'540825202@qq.com','d2f30ddd1f6c85aca59040a1c9d62cc4',10,'','欧夏晴','/res/images/avatar/8.jpg','','540825202@qq.com',0,NULL,'',1525757972569,'','',10),(100016,'yjikai@163.com','c9993d00fd9a06389e4339c8ace53c14',10,'','JiMoer','/res/images/avatar/16.jpg','','yjikai@163.com',0,NULL,'',1526123922579,'','',10),(100017,'1403852318@qq.com','6132f7de6ec97fe73bb18db72116c40a',10,'','孟人二','/res/images/avatar/2.jpg','','1403852318@qq.com',0,'','',1528180576775,'','',10),(100018,'1015336092@qq.com','4607e782c4d86fd5364d7e4508bb10d9',10,'','cheng','/res/images/avatar/1.jpg','','1015336092@qq.com',0,'','',1528567851030,'以夢为馬,不负韶华。','',10); -/*!40000 ALTER TABLE `sys_userrecord` ENABLE KEYS */; -UNLOCK TABLES; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2018-06-17 20:22:11 diff --git a/root/_t/layout.html b/root/_tpl/layout.html similarity index 98% rename from root/_t/layout.html rename to root/_tpl/layout.html index d0f3e8d..ddacb35 100644 --- a/root/_t/layout.html +++ b/root/_tpl/layout.html @@ -426,16 +426,17 @@ - + diff --git a/root/index.html b/root/index.html index 300ac77..53de7d8 100644 --- a/root/index.html +++ b/root/index.html @@ -15,7 +15,7 @@ #for(x : top.rows??)