首页
友情链接
精美壁纸
给我留言
更多
关于我
Search
1
uniapp Click点击事件冲突解决
4,587 阅读
2
【插件】UNI APP 实现商米打印机功能支持T1,T2,V2机型
4,003 阅读
3
【测试可用】个人码免签支付系统源码/免签支付系统/微信支付平台
2,043 阅读
4
windows10下docker:给已存在的容器添加端口映射的方法
1,253 阅读
5
Java Validation参数校验注解使用
1,235 阅读
Java
Spring Boot
Spring Mvc
Java基础
进阶知识
前端
uniapp
小程序/公众号
JavaScript
HTML/CSS
Vue
PHP
开源软件
商城
营销工具
开发工具
视频/教程
Discuz主题/插件
typecho主题/插件
SEO杂谈
数据库
MongoDB
MySQL
Redis
单片机
概念说明
电路相关
Python
devops
docker
k8s
linux
职场杂谈
登录
/
注册
Search
标签搜索
python
mysql
人人商城
php
java
docker
typecho
插件
微擎
seo
spring boot
discuz
队列
uni-app
phpcms
教程视频
开源系统
源码
工具
css
哈根达斯
累计撰写
108
篇文章
累计收到
161
条评论
首页
栏目
Java
Spring Boot
Spring Mvc
Java基础
进阶知识
前端
uniapp
小程序/公众号
JavaScript
HTML/CSS
Vue
PHP
开源软件
商城
营销工具
开发工具
视频/教程
Discuz主题/插件
typecho主题/插件
SEO杂谈
数据库
MongoDB
MySQL
Redis
单片机
概念说明
电路相关
Python
devops
docker
k8s
linux
职场杂谈
页面
友情链接
精美壁纸
给我留言
关于我
搜索到
108
篇与
哈根达斯
的结果
2021-07-21
Mybatis plus 代码生成,提高开发效率
使用mybatis generator 工具可生成代码第一步 pom.xml中 引入依赖下发引入generator 包与模板引擎velocity包 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.3.1</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.3</version> </dependency>新建类,执行main文件public class GeneratorTest { //代码生成保存目录 private final static String out="J:\\DEMO\\code\\api-server\\tmp"; //JDBC数据源 private final static String jdbc="jdbc:mysql://localhost:3306/java_dev?useUnicode=true&useSSL=false&characterEncoding=utf8"; //数据库账号 private final static String db_user="root"; //数据库密码 private final static String db_paswword="root"; //表前缀 private final static String table_prefix="eb_"; //包名 private static final String package_name="com.gxxblw.web"; private static final String author="哈根达斯"; public static void main(String[] args) { AutoGenerator mpg = new AutoGenerator(); File file=new File(out); File[] files= file.listFiles(); for (int i=0;i<files.length;i++){ files[i].deleteOnExit(); } // 全局配置 GlobalConfig gc = new GlobalConfig(); gc.setOutputDir(out); gc.setAuthor(author); gc.setOpen(true); //自定义Mappter文件名 gc.setMapperName("%sDao"); gc.setSwagger2(true); //实体属性 Swagger2 注解 mpg.setGlobalConfig(gc); // 数据源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setUrl(jdbc); // dsc.setSchemaName("public"); dsc.setDriverName("com.mysql.jdbc.Driver"); dsc.setUsername(db_user); dsc.setPassword(db_paswword); mpg.setDataSource(dsc); /*TemplateConfig templateConfig = new TemplateConfig(); templateConfig.setMapper("dao"); templateConfig.setEntityKt("domain"); templateConfig.setXml(null); mpg.setTemplate(templateConfig);*/ // 包配置 PackageConfig pc = new PackageConfig(); pc.setModuleName(scanner("模块名")); pc.setParent(package_name); pc.setMapper("dao"); pc.setEntity("model"); mpg.setPackageInfo(pc); // 策略配置 StrategyConfig strategy = new StrategyConfig(); strategy.setNaming(NamingStrategy.underline_to_camel); strategy.setColumnNaming(NamingStrategy.underline_to_camel); strategy.setEntityLombokModel(true); strategy.setRestControllerStyle(true); strategy.setInclude(scanner("表名,多个英文逗号分割").split(",")); strategy.setTablePrefix(table_prefix); mpg.setStrategy(strategy); mpg.setTemplateEngine(new VelocityTemplateEngine()); mpg.execute(); } public static String scanner(String tip) { Scanner scanner = new Scanner(System.in); StringBuilder help = new StringBuilder(); help.append("请输入" + tip + ":"); System.out.println(help.toString()); if (scanner.hasNext()) { String ipt = scanner.next(); if (StringUtils.isNotBlank(ipt)) { return ipt; } } throw new MybatisPlusException("请输入正确的" + tip + "!"); } }执行成功后保存目录将生成模板代码,更多参数可查看文档 查看代码生成
2021年07月21日
174 阅读
0 评论
0 点赞
2021-07-20
Spring Boot 中注解@Scheduled实现定时任务
在编写Spring Boot应用中经常会遇到这样的场景,比如:我需要定时地发送一些短信、邮件之类的操作,也可能会定时地检查和监控一些标志、参数等。1.创建定时任务在Spring Boot中编写定时任务是非常简单的事,下面通过实例介绍如何在Spring Boot中创建定时任务,实现每过5秒输出一下当前时间。在Spring Boot的主类中加入 @EnableScheduling 注解,启用定时任务的配置@SpringBootApplication @EnableScheduling public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }2.创建定时任务实现类@Component public class ScheduledTasks { private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); @Scheduled(fixedRate = 5000) public void reportCurrentTime() { log.info("现在时间:" + dateFormat.format(new Date())); } }运行程序,控制台中可以看到类似如下输出,定时任务开始正常运作了。2021-07-13 14:56:56.413 INFO 34836 --- [ main] c.d.chapter71.Chapter71Application : Started Chapter71Application in 1.457 seconds (JVM running for 1.835) 2021-07-13 14:57:01.411 INFO 34836 --- [ scheduling-1] com.didispace.chapter71.ScheduledTasks : 现在时间:14:57:01 2021-07-13 14:57:06.412 INFO 34836 --- [ scheduling-1] com.didispace.chapter71.ScheduledTasks : 现在时间:14:57:06 2021-07-13 14:57:11.413 INFO 34836 --- [ scheduling-1] com.didispace.chapter71.ScheduledTasks : 现在时间:14:57:11 2021-07-13 14:57:16.413 INFO 34836 --- [ scheduling-1] com.didispace.chapter71.ScheduledTasks : 现在时间:14:57:163.@Scheduled 详解在上面的入门例子中,使用了 @Scheduled(fixedRate = 5000) 注解来定义每过5秒执行的任务。对于 @Scheduled 的使用,我们从源码里看看有哪些配置:@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Repeatable(Schedules.class) public @interface Scheduled { String CRON_DISABLED = ScheduledTaskRegistrar.CRON_DISABLED; String cron() default ""; String zone() default ""; long fixedDelay() default -1; String fixedDelayString() default ""; long fixedRate() default -1; String fixedRateString() default ""; long initialDelay() default -1; String initialDelayString() default ""; }这些具体配置信息的含义如下:cron:通过cron表达式来配置执行规则zone:cron表达式解析时使用的时区fixedDelay:上一次执行结束到下一次执行开始的间隔时间(单位:ms)fixedDelayString:上一次任务执行结束到下一次执行开始的间隔时间,使用java.time.Duration#parse解析fixedRate:以固定间隔执行任务,即上一次任务执行开始到下一次执行开始的间隔时间(单位:ms),若在调度任务执行时,上一次任务还未执行完毕,会加入worker队列,等待上一次执行完成后立即执行下一次任务fixedRateString:与fixedRate逻辑一致,只是使用java.time.Duration#parse解析initialDelay:首次任务执行的延迟时间initialDelayString:首次任务执行的延迟时间,使用java.time.Duration#parse解析4.思考与进阶是不是这样实现定时任务很简单呢?那么继续思考一下这种实现方式是否存在什么弊端呢?可能初学者不太容易发现问题,但如果你已经有一定的线上项目经验的话,问题也是显而易见的:这种模式实现的定时任务缺少在集群环境下的协调机制。什么意思呢?假设,我们要实现一个定时任务,用来每天网上统计某个数据然后累加到原始数据上。我们开发测试的时候不会有问题,因为都是单进程在运行的。但是,当我们把这样的定时任务部署到生产环境时,为了更高的可用性,启动多个实例是必须的。此时,时间一到,所有启动的实例就会同时开始执行这个任务。那么问题也就出现了,因为有累加操作,最终我们的结果就会出现问题。解决这样问题的方式很多种,比较通用的就是采用分布式锁的方式,让同类任务之前的时候以分布式锁的方式来控制执行顺序,比如:使用Redis、Zookeeper等具备分布式锁功能的中间件配合就能很好的帮助我们来协调这类任务在集群模式下的执行规则。参考文献原文链接
2021年07月20日
169 阅读
0 评论
0 点赞
2021-07-19
MySQL中字符串类型 char、varchar、text类型的区别
1、 char长度固定, 即每条数据占用等长字节空间;适合用在身份证号码、手机号码等定。2、 varchar可变长度,可以设置最大长度;适合用在长度可变的属性。3、 text不设置长度, 当不知道属性的最大长度时,适合用text。按照查询速度: char最快, varchar次之,text最慢。1. char类型char(n)中的n表示字符数,最大长度是255个字符; 如果是utf8编码方式, 那么char类型占255 * 3个字节。(utf8下一个字符占用1至3个字节)2.varchar类型varchar(n)中的n表示字符数,最大空间是65535个字节, 存放字符数量跟字符集有关系;MySQL5.0.3以前版本varchar(n)中的n表示字节数;MySQL5.0.3以后版本varchar(n)中的n表示字符数;varchar实际范围是65532或65533, 因为内容头部会占用1或2个字节保存该字符串的长度;如果字段default null(即默认值为空),整条记录还需要1个字节保存默认值null。如果是utf8编码, 那么varchar最多存65532/3 = 21844个字符。3.text类型跟varchar基本相同, 理论上最多保存65535个字符, 实际上text占用内存空间最大也是65535个字节; 考虑到字符编码方式, 一个字符占用多个字节, text并不能存放那么多字符; 跟varchar的区别是text需要2个字节空间记录字段的总字节数。PS: 由于varchar查询速度更快, 能用varchar的时候就不用text。
2021年07月19日
407 阅读
0 评论
0 点赞
2021-07-19
【转载】针对百度SEO搜索优化经验之谈
一、百度知道回答问题。因为之前看过许多文章说百度知道权重很高,所以有一天我去百度知道搜影视相关的问题,然后一口气回答了将近10条,每一条都加上我的 链接。但是回答完之后再看,发现我的回答只有一条被保留,其余的全部被百度删除了。从这一点我是这样分析的原因:第一、可能是回答频率太快,第二、可能是回答内容太雷同。所以新手 站长在做百度知道的时候千万不要犯跟我一样的错误。正确的做法是每天只回答一两条就好,回答内容尽量要精确,不要只为了挂自己的链接而回答。如果是自己建马甲自问自答,也尽量要间隔一两天再回答和选择正确答案,欲速则不达。二、百度贴吧。因为有了百度知道被删回答的教训,所以在贴吧回帖我基本每天不会超过两条。也可能贴吧可以每天顶若干条帖子,但是我没敢尝试,如果还没收录就被百度K了就麻烦了。三、百度空间。百度空间我其实在07年就已经开通了,只不过一直没有打理。这一次我把百度空间的名字改成跟我网站一样的VIP影视网,并且把我的关键词和网站简介罗列在百度空间的“空间简介”位置。四、保持每天至少一篇原创文章。VIP影视网头条每天都会更新,并且都是原创的文章。这点想必大家都从以前的各种文章里看到过,我也这样照做了。当然完全原创对新手来说也很不容易,所以有一些文章我是从网上收集再加工,文字内容几乎跟原出处一点重复都没有,但表达的意思其实是一样的。上学时大家都学过改写文章吧,就是这个意思。五、写博客。这个也是比较古老的方法了,我选择的博客有新浪,雅虎,搜狐,网易。之前有人推荐过艾瑞专栏,但是我去了才发现那里写文章需要审核,而且我写的关于VIP影视网的文章根本不适合那里,第一篇就没有通过审核,所以第二天我就抛弃了。每天我写的原创文章都会在上述几个博客还有百度空间都发一遍,现在VIP影视网整站只有一百多篇文章,但是反向链接已经达到200左右,博客的功劳功不可没。另外如果大家对流量很感兴趣,我推荐大家可以发发猫扑。因为之前总觉得猫扑不是很适合我的网站定位,所以只尝试性的回了几篇帖子,但是从每天的流量统计来看,就这几篇帖子带来的流量都是比较可观的。还有就是域名的问题,根据前辈的经验,一个空间绑定两个域名不是很好,尤其是我要推广的是新域名,所以老域名我新开了一个空间,建立了一个index.php,做了301重定向转到新域名。但是出现一个问题,就是老域名只有首页能跳转到新域名,百度搜索的老域名的链接都是死链,所以我又在虚拟主机上给老域名做了404转向,这样是不是会对排名产生影响目前我还不知道,也希望有前辈看到这篇文章给指点一下。最后要给新手站长的忠告是一句老词:持之以恒。亲身实践过才知道哪怕是一写篇几百字的原创文章也是需要下很大功夫的。所以坚持很重要。原文出处: 查看原文
2021年07月19日
154 阅读
0 评论
0 点赞
2021-07-18
Java开发中 MySQL存储emoji表情报错的处理方法 MySQL中utf8mb4编码使用
在平时的网络平台应用开发中,需要需微信公众号的平台进行对接,在使用mysql存储微信昵称时常用用户使用emoji表情,常见的处理方式有如下:mysql使用utf8mb4编码程序中替换emoji为其它字符串今天我们主要来介绍mysql使用utf8mb4编码方法解决问题文章目录索引utf-8编码可能2个字节、3个字节、4个字节的字符,但是MySQL的utf8编码只支持3字节的数据,而emoji表情数据是4个字节的字符。如果直接往采用utf-8编码的数据库中插入表情数据,Java程序中将报SQL异常:ava.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'nickname' at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2620) at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1662) at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1581) utf8mb4编码是utf8编码的超集,兼容utf8,并且能存储4字节的表情字符。采用utf8mb4编码的好处是:存储与获取数据的时候,不用再考虑表情字符的编码与解码问题。一、要求1. MySQL的版本utf8mb4的最低mysql版本支持版本为5.5.3+,若不是,请升级到较新版本。2. MySQL驱动5.1.34可用,最低不能低于5.1.13一、配置修改1 .修改MySQL配置文件修改mysql配置文件my.cnf 修改如下配置项[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4'修改完成后重启mysql服务,并检查编码结果SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';显示如下:Variable_nameValuecharacter_set_clientutf8mb4character_set_connectionutf8mb4character_set_databaseutf8mb4character_set_filesystembinarycharacter_set_resultsutf8mb4character_set_serverutf8mb4character_set_systemutf8character_sets_dirC:datacollation_connectionutf8mb4_general_cicollation_databaseutf8mb4_unicode_cicollation_serverutf8mb4_unicode_ci其中参数变量 collation_connection 、collation_database 、collation_server是什么没关系,但必须保证以下参数变量必须是utf8mb4character_set_client:客户端来源数据使用的字符集character_set_connection:连接层字符集character_set_database:当前选中数据库的默认字符集character_set_results:查询结果字符集character_set_server:默认的内部操作字符集1 .数据库连接的配置数据库连接参数中:characterEncoding=utf8会被自动识别为utf8mb4,也可以不加这个参数,会自动检测。而autoReconnect=true是必须加上的。jdbc:mysql://127.0.0.1:3306/dbname?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimeZone=GMT+82 .修改字段名字符集修改nickname字符集编码为utf8mb4_unicode_ciALTER TABLE `tb_user` MODIFY COLUMN `nickname` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL;然后就可以保存emoji到数据库中,如下图可以在Navicat Premium中查看已保存的emoji表情
2021年07月18日
281 阅读
0 评论
0 点赞
1
...
15
16
17
...
22