自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(231)
  • 资源 (2)
  • 收藏
  • 关注

原创 Could not initialize class org.bytedeco.javacpp.avutil问题解决

该程序在自己的机器上没有问题,但生成jar包后放置到服务器上运行出错,出错的关键字是“java.lang.NoClassDefFoundError:Could not initialize class org.bytedeco.ffmpeg.global.avutil”。最开始想的是Windows Server2008不支持流媒体服务造成的,安装上KB963697,然后通过MCC安装上流媒体服务后,发现依然如此。发现这一系列提供的解决方案均无法解决该问题,但给了一个思路,是java库的版本的问题。

2023-07-11 11:17:31 2562 2

原创 SpringBoot拦截器-解决java.io.IOException: Stream closed问题

SpirngBoot拦截器(Interceptor)和过滤器(Filter)的操作的如下图所示。OOP编程的思路是封装、继承和多态,而AOP编程的思路是不改变原有接口和功能的基础上提供功能扩展。SpringBoot拦截器和过滤器是Spring Boot的一种机制,用于对请求和响应进行操作的拦截,是AOP编程的一种体现。一般来说,AOP编程的实现思路是提供代理,把一些常用功能如权限检查、日志、事务等,从每个业务方法中剥离出来,而提供代理统一实现。该问题的解决思路是:提供一个复制流,让操作基于复制流。

2023-05-23 16:40:44 3411 1

原创 凤凰架构学习心得

最近一直没写博客,因为本人忙于申博而无暇顾及其他(最终终于上岸了)。整改完成之后,决定还是再进行一次技术总结,于是,就又学习了一遍技术方案,然后在网络上翻到了周志明博士的《凤凰架构》。学完之后,大为叹服。决定写几句有点心得体会。

2023-04-26 10:17:52 211

原创 一个学习队列、生产者-消费者模式、多线程、同步的极佳的例子

3)多线程:线程是计算机中执行任务的最小单位(进程是拥有独立资源的最小单位)。线程sleep或停止会退出CPU。多线程之间会进行任务切换,这牵涉对进程的管理,以及对CPU资源的占用。4)同步:多线程之间同步,就是让任务取得一致。多线程同步,可以获得任务的一致性。多线程同步有多种机制,信号、临界区都是典型的机制。2)生产者-消费者模式:通过缓冲作为中间件,生产者发送数据,消费者读取数据;发现一个极佳的学习队列、生产者-消费者模式、多线程、同步(当然也有模板)的极佳的例子。1)队列:先进先出的表结构;

2023-02-20 18:38:11 159

原创 JAVA线程池的使用

线程池是另一种池化思想的运用,把线程放入池中进行管理。这种方法的好处是可以避免线程的创建、切换和销毁,因为这些过程非常耗资源。一般情况下,大厂都不建议工程师自己创建线程池,因为线程池创建很容易消耗大量内存。JAVA线程池的基本原理,其实就是对线程的生产者-消费者模型。JAVA线程池会确定核心线程数和最大线程数,来控制线程池的大小。如上图所示,右半部分是线程池的管理,而左半部分是任务的执行。JAVA线程池主要做的事情是对线程池的管理和任务的执行。其中,Task为相关线程。JAVA线程池就是这样的一种线程池。

2023-02-17 17:38:46 914

原创 JAVA程序发布为启动项目

然后,把文件放到C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 文件夹下。2)这种方式启动后,bat文件将运行为控制台窗口,如果关闭控制台窗口,将关闭该程序。,可以安装相关服务(在控制面板—>管理工具—>服务里查看)。注意,可以对WinSW.exe改名,但对应的XML文件必须和exe命名相同,才能保证文件被识别。JAVA程序导出为JAR包之后,做成启动项目,才可以正确运行。

2022-12-19 16:33:39 713

原创 宇宙的精华与大数据的失败

而真正需要发挥作用的,是发挥人的想象力、创造力,并尊重个体价值的实现。无论是做任何事物,无论是多么高大上的名词,无论它们叫大数据、人工智能,以及其他,都必须尊重这条符合人性,让人类成为“宇宙的精华,万物的灵长”的规则。

2022-10-18 22:27:06 738

原创 JPA方言问题

JPA方言问题,是在进行JPA开发时,可能遇到的问题。主要遇到问题的场景为:JPA由于要适应不同数据库,而不同数据库表结构和数据类型存在的一定的区别,从而造成方言问题。

2022-10-13 15:33:49 1055

原创 SpringBoot之JPA框架下如何使用JTA——分布式事务解决方案

本篇博客的精髓,在于实现Springboot框架下的分布式事务。

2022-10-11 14:54:52 845

原创 SpringBoot中@AutoWired注解的静态变量

SpringBoot中@AutoWired注解的静态变量

2022-08-22 19:03:13 878

原创 JPA之EntityManager两种group方法

一种方法是采用原生的SQL语句。但使用此种方法需要注意如下问题:就是当被选择项(select的项目)本身不在group里,且没有聚合函数时,会产生错误。另一种方法是使用Stream功能进行group。值得注意的是,Stream的group分组后,会生成一个Map。可以在Map里进行统计和执行操作。JPA对group的支持,其实并不太好。笔者选择了两种方法进行操作。...

2022-08-18 09:42:36 624

原创 也谈数据治理

从这个意义上来讲,任何有数据的组织,都会有数据治理,但数据治理的水平有高低之分。数据治理的水平,体现为数据使用的便利,以及数据使用的安全。

2022-07-26 15:00:53 2167 2

原创 EntityManagerFactory和EntityManager的一个用法探究

EntityManager是具体的操作增删改查,但EntityManagerFactory才定义了持久化存储单元的环境

2022-07-20 17:32:05 930

原创 IDEA导出Springboot包(附加本地库)

IDEA导出Springboot库

2022-07-19 11:23:10 1171

原创 Android APP息屏状态下收到通知解决方案

Android APP息屏接收通知解决方案

2022-06-29 15:20:37 3749 15

原创 JAVA Stream原理和常见操作

1.Stream原理Stream是JAVA8开始的新的用法。Stream本意为流,Stream也确实如流一样,给操作带来了方便。Stream的表现是:1)提供一个特定类型的队列;2)提供一系列操作,让队列拥有类似于SQL语句的操作。Stream的原理或背后的基本支持是ForkJoinPool。ForkJoinPool主要用来使用分治法(Divide-and-Conquer Algorithm) 来解决问题,即把多个大任务分割为多个小型子任务。但该任务的缺点是:如果子任务没有完成,整个总任务也没法进行完成和归

2022-06-22 11:40:21 1842

原创 SpringBoot解决跨域问题

Springboot解决跨域问题

2022-06-20 09:52:36 753

原创 C#的partial用法

最近,在用C#做程序。在做东西之前,发现原来的C#代码;看完之后,感觉头大;因为,代码实在太长了,一个功能类写几千行,而且,全都是这么写下来。笔者牢记一个原则:好的代码,不是给机器用的,而是给人用的。看到这个现象,不觉头大。就想起一个原则:对几千行代码进行拆分;正好,C#提供了一个partial关键字,可以对class、interface进行分割。如下所示:源文件A1.cs源文件A2.cs等同于一个源文件A.cs挺理解部分工程师把一大堆功能写到一个类里面的;因为C#始终是一种面向对象的语言

2022-06-08 18:11:59 3249 1

原创 Caused by: java.lang.ClassNotFoundException: yaml.config.sharding.YamlShardingRuleConfiguration

今天,碰到一个异常,“Caused by: java.lang.ClassNotFoundException: org.apache.shardingsphere.core.yaml.config.sharding.YamlShardingRuleConfiguration”。找相关错误,Stack Overflow上给的错误解释,说是配置文件错误。并认为原因为原配置文件为“spring.shardingsphere.datasource.ds0.url” 应该改为“spring.shardingsph

2022-05-30 17:33:07 936

原创 Hibernate Connection Pool Validation Thread java.lang.OutOfMemoryError

近日,用Springboot做了一个网络服务器,原理很简单,网络访问以后,用数据库存储访问。代码如下:@RestController@RequestMapping("/test")public class ThirdParkController { private EntityManagerFactory mFactory = null; private EntityManager mEm = null; // <summary> /// 车辆入场

2022-05-07 18:27:25 602

原创 Caused by: java.lang.NoSuchMethodException: org.springframework.boot.context.config.ConfigDataEnviro

本文的题目其实应该是“Caused by: java.lang.NoSuchMethodException: org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessor.<init>()”和“Exception in thread "main" java.lang.IllegalArgumentException: Cannot instantiate interface org.springframewo

2022-05-05 16:43:59 4188

原创 大规模后台导出Excel无法并发

近日,完成一个功能。需要后台在数据库导出数据,然后,生成Excel发送给前端。原来的程序,是C#写的,采取简易原则,继续在原有工程上实现。碰到的第一个问题是,原有的ApiController不支持Response语法。于是,改为Controller实现。第二个问题,是Excel的导出库。最开始,试图用CSV作为Excel导出,发现部分数据会存在格式问题,于是,最终采用了Excel导出库。最后,综合以后,选用NPOI库。样例代码如下:public class FileDownContro

2022-04-29 13:58:19 1657

原创 IDEA进行Maven同步的时候显示“Cannot resolve ***”

在用IDEA进行Sync同步时(同步工具用Maven),发现总提示“Cannot resolve ***”相关操作。最开始,以为是相关库没有同步下来,最后发现原因为:不同库之间,相互依赖库存在版本冲突。解决方法:1)逐渐寻找无法同步的库;2)去除冲突的库。具体为,在pom.xml里添加exclusions和exclusion,保证依赖不冲突。样例如下:<dependency> <groupId>org.springframework.boot</

2022-04-06 14:24:48 1456

原创 联合主键和索引

今天,看到一个表,是联合主键的。以前,确实也看到过联合主键,还建立过联合主键。今天,正好看到了,就对联合主键和索引的知识进行重新整理下。主键和索引的关系为:1)主键一定是索引;2)索引是可以自建的,非主键;3)索引是一种数据结构,方便查找。联合主键的本质,就是一个联合起来造成的索引,用来作为表的主键。但联合主键要想用起来,必须采用如下原则:“大哥不能丢,兄弟不能断”。如下所示:create table test( name varchar(21), id n

2022-03-30 11:28:38 4628 3

原创 ShardingSphere分库分表方案

最近,在研究后台数据库过大的时候,相关的分库分表解决方案。1.分库分表当一个数据库里的数据库和数据表足够大的时候,就面临很多问题。由于数据库大多采用B树存储,当数据量太大的时候,会发生资源访问过大,数据迟缓问题。面对这类问题,比较好的方案是分库分表。分库分表的方案有两种:垂直切分和水平切分。垂直切分一般为不同业务和不同字段分割到不同部分,水平切分一般为同一数据库或数据表根据一定规则分到不同的数据库和表里。一般来说,库一般采用垂直切分,优点是专库专用;表采用水平切分,避免数量过大。2.

2022-03-23 09:26:53 1240

原创 支付宝DTS架构

最近,在忙着做一个任务,很奇怪发现后台的业务,付款和销账并不是在一个同一个事务里。按照我的理论,付款和销账这些属于数据库的业务,显然应该是在一个事务里,才能保证数据的一致性。与后台的负责人交流以后,告诉我付款和销账确实是两个过程。作为软件厂商,自己只能负责自己的事务一致性,但不能保证别的厂商提供的软件服务的一致性。这番陈述,似乎说服了我,但貌似并不是最好的解决方案。理论上,以上事务属于分布式事务。分布式事务,一般采用两阶段(2PC);即第一段提交完成,再进行第二段提交。但这种方式,会造成所有

2022-03-09 10:33:23 3693

原创 Android手机拍照APP闪退问题及应对措施

近日,在APP上进行手机拍照,发现很奇怪的问题:就是在进行拍照的时候,APP会闪退,然后功能不正常;而且,闪退是非必现的——也就是多次操作肯定会出现,但并不能确定出现的时间和原因。当时,找了各种原因,刚开始都以为是自己程序写的有问题,但由于是非必现,就可以基本上认为该结论不成立。又怀疑是高德地图的问题,但更换高德地图的SDK以后,发现问题依然存在。在随后的几天里,进行了多次试验和相关资料搜索,最终确定是拍照过程中造成的。并有如下基本资料:部分Android机型,如oppo(鄙人的手机不幸就是oppo

2022-02-17 11:46:05 3759

原创 java.lang.OutOfMemoryError

近日,用Bugly追踪到一个奇怪的崩溃:# OkHttp Dispatcher(1604)java.lang.OutOfMemoryErrorpthread_create (1040KB stack) failed: Out of memory很奇怪,这个错误貌似不正常。大致猜测该问题原因为创建线程时的错误。继续研究,发现该问题主要在华为手机上,找出资料为“在Android7.0及以上的华为手机(EmotionUI_5.0及以上),这些手机的线程数限制都很小(应该是华为rom特意修改

2022-02-10 18:30:00 1416

原创 CountDownLatch的用法

今日试图解决一个问题,就是在Android中实现多线程同步,但要求几个变量同时同步。当时,首先想的是,一定得用Android或JAVA的本身机制。发现有个叫CountDownLatch的机制。CountDownLatch多线程同步类,可以协调多个线程之间的同步。CountDownLatch的典型用法如下:1)创建一个CountDownLatch实例,并确定需要等待的线程或任务数;2)一个线程或任务完成,CountDownLatch计数器减一;3)使用CountDownLatch.

2022-02-10 16:24:34 1639

原创 Android中getActivity()为null

通过bugly,追踪到一个崩溃,发现问题为在Fragment里getActivity()为null后崩溃。于是,深层次找原因。发现根本原因为:JVM在内存不足的情况下,会把Activity回收;而Frament和Activity的声明周期不一致,此时Frament不一定会被回收;因此,才导致getActivity()为null的问题。Activity生命周期如下:Fragment的生命周期如下:因此,可以用的解决方法是:对Activity添加引用,保证Acitivit

2022-02-08 14:36:05 1668

原创 遇到了ANR错误

最近在解决一个Android问题。问题现象如下:手机进行上传的时候,任务太多,会报错误,甚至会提示“无响应,是否关闭”。显然,这是遇到了ANR错误,也就是Androdi手机无响应错误。这种错误的原因为:Android为了快速响应,把有关图形操作的相关任务,都放到了主线程;但如果主线程过分繁忙而没有响应,相关错误就会产生(When the UI thread of an Android app is blocked for too long, an "Application Not Respondin

2022-01-29 17:56:26 1613

原创 Android读取程序中文件

近日,需要完成一个程序,需要把相关文件放到Android程序中,并共Android读取。Android读写文件很简单,如果用JAVA语言的话,就是JAVA文件读写。真正的问题在于,在Android程序中,应该把文件放到哪里,才能保证能可以读取。继续查找相关资料,得出如下结论:1)Android中有raw和assets两个文件夹下的文件,可以不编译为二进制文件,把相关文件放到这两个文件即可。2)raw文件目录为res/raw,相关文件会被映射到R.java,访问时直接通过资源ID访问;

2022-01-17 18:40:02 2648

原创 android static变量陷阱

最近发现Android的APP一直出问题,一直找不到原因。于是,我装上了Bugly进行跟踪。果然,跟踪到一个奇怪的异常,异常显示一个static变量为一个非常奇异的值。第一眼感觉很奇怪,在笔者的印象中,static为静态变量,是一个全局数据,不应该为异常值,非常困惑。于是,继续学习相关资料,了多篇博客介绍android的static的变量存在陷阱的。文章链接如下:[1]安卓全局静态变量中的坑_三月的船长-CSDN博客[2]为何Android开发中不推荐使用static全局变量传参_修的专

2022-01-11 17:24:49 1859

原创 使用Bugly 作为APP异常上报工具

0.需求最近发布的APP,用户反馈遇到了一些稀奇古怪的崩溃。本地测试,一定程度上无法覆盖所有的case。加之用户使用场景和本地场景存在一定差异性。这难免会造成一些稀奇古怪的崩溃,且不易复现。突然想到,微软也在做一件事,就是每当程序崩溃以后,总要把一些崩溃上报。显然,APP也把崩溃进行上报,也是一个好思路。继续发现,好些大厂都已经提供了完整的APP上传工具和机制。但如果是站在工程师的角度,如果资源不够的话,重新设计一套工具,显然是不合适的。于是,想到了是否有公开的可以直接用APP异常上传工具和“轮

2022-01-07 16:38:28 4385 5

原创 Android界面点击无正确响应

最近,在解决一个Android问题,发现Android界面的点击使用无正确响应。分析可得:点击界面--->视图接收点击消息--->对应消息函数运行。首先想到的,是视图上有无新界面遮挡。经调试以后,发现并无该问题。继续研究,发现视图有点击过程和接收过程,但比较奇怪的是,没有对应的接收视图收到相关消息。继续研究,发现界面过程如下:1)界面自己制作了适配器(Adapter);2)每次会根据实际数据new新的适配器;3)视图和适配器绑定。而由于每次重新生成适配器且和视

2022-01-04 15:28:54 2432

原创 .NetCore Web改为单任务执行

以前,项目里有个.NetCore Web项目,为了效率,并没有采用单任务的方式。但经过测试以后,发现该功能存在如下问题:该任务可以接受多个响应,但假如会有多个需要串行化的任务,由于任务本身并不能保证任务得到串行化处理,从而造成任务处理状态错误。如果任务最终需要串行化处理,功能改为单任务,显然是必然的方法。于是,修改任务的步骤如下:1)添加[MethodImpl(MethodImplOptions.Synchronized)]方法2)增加互斥量作为同步方法。样例如下:public

2021-12-29 16:33:26 113

原创 Unable to build Hibernate SessionFactory和Caused by: org.hibernate.tool.schema.spi.SchemaManagementEx

近日,在使用Hibernate的时候,发现如下问题,即发现Hibernate出现如下问题,先出现如下Unable to build Hibernate SessionFactory错误,后出现Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column type encountered in column [idarea] in table [areaobject]; f

2021-12-06 14:25:23 1361

原创 BS客户端安全使用解决方案

一、 引言BS客户端是很多公司产品的重要载体,很多产品,都是基于浏览器客户端(BS客户端)的。BS客户端的优点是简洁高效,但会存在明文传播,无法防止复制等一系列问题。本文试图提供一系列解决方案,从而尽可能减少BS客户端的明文传播、直接进行复制的问题。二、 几个要点BS客户端安全使用,目前有几个要点:1) 网络传输用密文传播;2) 登录状态验证,防止登录过期;3) 网页界面使用防复制粘贴命令。同时,要说明的是,由于BS客户端(浏览器)自身的特点,本解决方案并不能保证安...

2021-11-26 14:18:47 1683

原创 EntityManager使用原生查询createNativeQuery并把值映射到自定义实体

最近一直在用JPA,使用了EntityManager作为基本查询方法。EntityManager可以满足基本的增删改查,但实际上很多时候,是必须采用原生查询的。而且,原生查询的返回值必须和自定义实体相配。当自定义实体对应原生查询的返回值的时候,一般有2种方法。1)自定义实体类,可以直接运用createNativeQuery的方法。接口定义如下:public Query createNativeQuery(String sqlString, Class resultClass)class

2021-11-25 10:09:15 8308

原创 EntityManagerFactory单例、EntiyManager与连接池

最近在项目中使用JPA,用到了EntityManager,想用EntityManager的单例。然后,发现一个问题,EntityManager可以用单例,但EntityManager使用时都会使用上下文,即会进行操作。当多个进程使用一个EntityManager时,会造成程序使用错误,如空指针错误等异常。同时,EntityManager并非线程安全的;因此,EntityManager无法用单例。可以用的单例是EntityManagerFactory,EntityManagerFactory本身为

2021-11-22 15:21:02 1125

软件项目管理:从瀑布到敏捷.pdf

讲述项目管理的定义、特定和过程,以及从瀑布到敏捷的过程。 项目是一个独特的任务或是系统化的流程;项目的目的是创造新的产品或服务,完成产 品或者服务的交付。 软件项目有其特点,并由瀑布发展到敏捷。

2020-09-04

软件项目管理:从瀑布到敏捷.pdf

项目:一个独特的任务或是系统化的流程;项目的目的是创造新的产品或服务,完成产 品或者服务的交付。 • 产品:项目产生的一系列可交付物件。

2020-03-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除