首页 文章 精选 留言 我的

精选列表

搜索[GPU适配],共10000篇文章
优秀的个人博客,低调大师

FydeOS v14.1 更新发布:着重优化 PC 设备适配性

本次更新为你带来: 优化的首次启动激活向导(OOBE)体验 ​ 编辑 切换为居中 FydeOS v14 系统首次启动向导步骤 优化的真文韵输入法 ​ 编辑 切换为居中 FydeOS v14 输入法 深色模式切换(实验性功能) ​ 编辑 切换为居中 FydeOS v14 深色模式 应用启动器(实验性功能) ​ 编辑 切换为居中 FydeOS v14 应用启动器 FydeOS v14.1 是我们对 FydeOS v14 的一个维护版本。在此次的发布里,值得一提的修改有: 修复了在某些设备上触控板无法使用的问题 修复了在某些设备上蓝牙和 wifi 无法使用的问题 修复了某些设备上无法挂载 SMB 网络存储磁盘的问题 修复了在某些设备上删除安卓程序之后图标仍然留存的问题 修复了若干跟真文韵输入法相关的问题 优化了安卓子系统激活启动的流程 优化了 Open GApps 配置程序以及配置 Open GApps 的流程 优化了 Installer 程序以及执行 Installer 时的流程 添加了若干对安卓子系统视频播放性能以及整体稳定性的优化 希望你喜欢本次更新的新功能!如果你有什么想对我们说的,欢迎随时到 FydeOS 社区或 Telegram 讨论组来告诉我们。 我们坚信,FydeOS 将逐渐成为一个更加开放的平台,你想要的所有程序,都能在 FydeOS 上使用。千里之行,这是我们的第一步,只愿今后的每一步都有你相伴。

优秀的个人博客,低调大师

Jeepay 1.5.0 发布:重构 MQ 适配,开箱即用的开源聚合支付系统

Jeepay是一套适合互联网企业使用的开源支付系统,支持多渠道服务商和普通商户模式。已对接微信支付,支付宝,云闪付官方接口,支持聚合码支付。 v1.5.0版本升级内容: 提取jeepay-components项目, 放置OSS, MQ公共组件包; 重构多MQ的实现,对生产者和消费者项目的使用透明,支持无缝切换三个厂商; ActiveMQ添加账密配置, 添加连接池pool配置; 修改聚合码前端项目的提示信息; 修改微信支付宝的参数配置项,支持自定义配置页面; 修复退款订单查询条件不生效等已知问题。 更多升级日志:https://www.jeequan.com/dev/update/category_1016.html 项目特点 支持多渠道对接,支付网关自动路由 已对接微信服务商和普通商户接口,支持V2和V3接口 已对接支付宝服务商和普通商户接口,支持RSA和RSA2签名 已对接云闪付服务商接口,可选择多家支付机构 提供http形式接口,提供各语言的sdk实现,方便对接 接口请求和响应数据采用签名机制,保证交易安全可靠 系统安全,支持分布式部署,高并发 管理端包括运营平台和商户系统 管理平台操作界面简洁、易用 支付平台到商户系统的订单通知使用MQ实现,保证了高可用,消息可达 支付渠道的接口参数配置界面自动化生成 使用spring security实现权限管理 前后端分离架构,方便二次开发 由原XxPay团队开发,有着多年支付系统开发经验 Jeepay运营平台功能 Jeepay商户系统功能 🍯 系统截图 以下截图是从实际已完成功能界面截取,截图时间为:2021-07-06 08:59

优秀的个人博客,低调大师

QuickDAO 4.1.7 版本发布,适配 Oracle 数据库以及新增 DCL 操作!

QuickDAO4.1.7版本已发布,可在maven中央仓库下载(阿里云仓库可能更新不及时),本次更新内容如下: [新增]Oracle数据库支持,支持11g及以上版本.由于Oracle分页功能较复杂,目前暂未实现Oracle数据库的分页API操作 [新增]DCL操作,用户可通过QuickDAO进行创建数据库用户,授权,取消授权等相关操作. [修复]解决postgre低版本获取自增id时报异常的问题 [优化]id生成器返回值改为String类型,可更灵活的生成id生成值 QuickDAO是一款简单易用的ORM框架,虽然市面上ORM框架已经非常多,但是有很多痛点这些框架并没有解决.QuickDAO相较于其他ORM框架的特点如下: 支持lambda表达式 从版本4.1.4开始,查询API支持lambda查询 lambda文档 支持外键关联操作 虽然很多ORM框架宣称支持外键查询,但无一例外最终形式仍然是让开发者手写SQL语句.QuickDAO在API设计层面上支持外键关联查询,真正的无需手写多表关联查询SQL语句. 外键关联查询文档 虚拟查询(无实体类查询) 常规的ORM框架都需要建立实体类,然后再根据实体类来查询。QuickDAO支持无实体类查询,不用事先建立实体类也能够事先对数据库的查询,修改和删除. 虚拟查询文档 事务操作 QuickDAO实现了事务功能,事务相关API提供了QuickDAO其他数据库操作一样便利的API,对于复杂的事务操作需求,QuickDAO也能够满足 事务操作文档 子查询支持 QuickDAO在API层面上支持子查询,您可以通过API直接拼接生成一个子查询SQL语句。这意味着即使是一些相当复杂的SQL语句,QuickDAO也能够轻松面对。 子查询文档 自定义数据库列类型,索引等 QuickDAO提供了实体注解,实体注解的类型丰富。通过实体注解,您可以定义数据库列的列名,列类型,列注释,表索引,非空,check约束等等等等。 实体注解文档 最后,写这个框架的初衷是市面上已有的ORM框架不能解决开发中痛点.QuickDAO经过近2年的支持开发,目前已经迭代到4.X版本,也在个人项目,公司项目实际使用过.希望本人开发的QuickDAO框架能够为中国的开源事业贡献一份自己的力量. QuickDAO文档:https://quickdao.schoolwow.cn QuickDAO的github地址:https://github.com/sunyue1380/QuickDAO4 QuickDAO的gitee地址:https://gitee.com/648823596/quickdao4

优秀的个人博客,低调大师

JetBrains 宣布 Jetpack Compose for Web,使用 Kotlin 开发适配多端的 Web UI

JetBrains 宣布了一款名为“Jetpack Compose for Web”的新工具,官方介绍称此项目基于 Google现代 UI 工具包 Jetpack Compose,支持使用 Kotlin 编写响应式 Web UI。 Jetpack Compose 是用于构建原生界面的新款 Android 工具包。它可简化并加快 Android 上的界面开发。使用更少的代码、强大的工具和直观的 Kotlin API,快速让应用生动而精彩。UI 代码和预览如下图所示: 据介绍,Jetpack Compose for Web 可简化并加速Web 应用的UI 开发,目标是在Web、桌面和 Android APP 之间实现UI 代码共享,一套代码适应多端。目前处于技术预览阶段。 fun greet() = listOf("Hello", "Hallo", "Hola", "Servus").random() renderComposable("greetingContainer") { var greeting by remember { mutableStateOf(greet()) } Button(attrs = { onClick { greeting = greet() } }) { Text(greeting) } } Result: Servus 使用 Compose for Web 构建用户界面 借助 Compose for Web,开发者通过使用 Kotlin 并应用Jetpack Compose 的概念和 API 为 Web 构建响应式用户界面,以表达应用程序的状态、行为和逻辑。 可组合的 DOM API 通过 DOM 元素和 HTML 标签表达设计和布局 使用类型安全的 HTML DSL 构建 UI 表示形式 通过使用类型安全的 CSS DSL 创建样式表来完全控制应用程序的外观 通过 DOM 子树与其他 JavaScript 库集成 fun main() { renderComposable("root") { var platform by remember { mutableStateOf("a platform") } P { Text("Welcome to Compose for $platform! ") Button(attrs = { onClick { platform = "Web" } }) { Text("...for what?") } } A("https://www.jetbrains.com/lp/compose-web") { Text("Learn more!") } } } 具有 Web 支持的多平台小部件 通过利用 Kotlin 的 Expect-actual 机制来提供特定于平台的实现,从而使用和构建可在 Android、桌面和 Web 上运行的 Compose 小部件 处于实验性阶段的一组布局原语 (layout primitives) 和API,这些原语和 API 与 Compose for Desktop/Android 的功能相似 示例代码 使用 Composable DOM 编写简单的计数器 fun main() { val count = mutableStateOf(0) renderComposable(rootElementId = "root") { Button(attrs = { onClick { count.value = count.value - 1 } }) { Text("-") } Span(style = { padding(15.px) }) { /* we use inline style here */ Text("${count.value}") } Button(attrs = { onClick { count.value = count.value + 1 } }) { Text("+") } } } 声明和使用样式表 object MyStyleSheet : StyleSheet() { val container by style { /* define a class `container` */ border(1.px, LineStyle.Solid, Color.RGB(255, 0, 0)) } } @Composable fun MyComponent() { Div(attrs = { classes(MyStyleSheet.container) /* use `container` class */ }) { Text("Hello world!") } } fun main() { renderComposable(rootElementId = "root") { Style(MyStyleSheet) /* mount the stylesheet */ MyComponent() } } 声明和使用 CSS 变量 object MyVariables : CSSVariables { val contentBackgroundColor by variable<Color>() /* declare a variable */ } object MyStyleSheet: StyleSheet() { val container by style { MyVariables.contentBackgroundColor(Color("blue")) /* set its value */ } val content by style { backgroundColor(MyVariables.contentBackgroundColor.value()) /* use it */ } } @Composable fun MyComponent() { Div(attrs = { classes(MyStyleSheet.container) }) { Span(attrs = { classes(MyStyleSheet.content) }) { Text("Hello world!") } } } 项目示例 下面提供了一些示例应用程序,分别使用 DOM 和 Widget API 进行了演示。 Jetpack Compose for Web 的登录页面本身就是一个 Compose 项目,使用 DOM API 和 CSS DSL 定义其内容、结构和布局,点此查看源码 Falling Balls游戏通过重用Compose for Desktop Demo 的实现来演示多平台小部件,点此查看源码

优秀的个人博客,低调大师

Android 系统自带图片裁剪功能(适配7.0、8.0、对了还有小米手机)

前段时间写了如何获取相册和拍照之后的照片并且进行显示和上传,这一次是如何进行圆形图像制作,经常看我写的笔记的人会知道,我很懒。那么我就懒的自定义了,目前需求就用原生的就好了,大神的轮子,我会在后面进行推荐。这篇笔记是依赖于:[Android调用相册、相机(兼容6.0、7.0、8.0)](https://www.jianshu.com/p/41b093d213fb) 文章撰写的,所以不会基本操作的,请先去看看那个。 先上效果哈: 一、布局设置 由于是圆形头像,所以,我们引用一个举世闻名的项目哈:CircleImageView <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/btn_get_pic_form_photo_album" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_margin="10dp" android:text="调用相册" /> <Button android:id="@+id/btn_get_Permission" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_margin="10dp" android:text="动态权限申请" /> <Button android:id="@+id/btn_get_pic_from_camera" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_margin="10dp" android:text="调用相机" /> <de.hdodenhof.circleimageview.CircleImageView android:id="@+id/iv_test" android:layout_width="96dp" android:layout_height="96dp" android:layout_centerInParent="true" android:src="@drawable/ic_launcher_background" app:civ_border_color="#999999" app:civ_border_width="2dp" /> </RelativeLayout> 布局没有太大变化,就是把之前的ImageView修改为CircleImageView控件 二、.java 文件 这里增加了两个方法 方法一 private void photoClip(Uri uri) { // 调用系统中自带的图片剪裁 Intent intent = new Intent("com.android.camera.action.CROP"); intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); intent.setDataAndType(uri, "image/*"); // 下面这个crop=true是设置在开启的Intent中设置显示的VIEW可裁剪 intent.putExtra("crop", "true"); // aspectX aspectY 是宽高的比例 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // outputX outputY 是裁剪图片宽高 intent.putExtra("outputX", 150); intent.putExtra("outputY", 150); intent.putExtra("return-data", true); startActivityForResult(intent, 3); } 该方法,传入我们拿到的照片的 uri 进行激活 Android 系统的裁剪界面。我是在 onActivityResult 内进行调用该方法。 方法二 public String saveImage(String name, Bitmap bmp) { File appDir = new File(Environment.getExternalStorageDirectory().getPath()); if (!appDir.exists()) { appDir.mkdir(); } String fileName = name + ".jpg"; File file = new File(appDir, fileName); try { FileOutputStream fos = new FileOutputStream(file); bmp.compress(Bitmap.CompressFormat.PNG, 100, fos); fos.flush(); fos.close(); return file.getAbsolutePath(); } catch (IOException e) { e.printStackTrace(); } return null; } 该方法 传入获取照片的 bitmap 和裁剪之后的照片名称,生成文件的保存路径,韩小呆将其保存在了本地的根目录了。 完整代码 package com.example.hxd.pictest; import android.Manifest; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.os.SystemClock; import android.provider.MediaStore; import android.support.annotation.NonNull; import android.support.v4.content.FileProvider; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.Toast; import com.bumptech.glide.Glide; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; import java.util.Objects; import java.util.logging.Logger; import de.hdodenhof.circleimageview.CircleImageView; import pub.devrel.easypermissions.EasyPermissions; public class MainActivity extends AppCompatActivity implements View.OnClickListener, EasyPermissions.PermissionCallbacks { private CircleImageView ivTest; private File cameraSavePath;//拍照照片路径 private Uri uri; private String[] permissions = {Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}; private String photoName = System.currentTimeMillis() + ".jpg"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btnGetPicFromCamera = findViewById(R.id.btn_get_pic_from_camera); Button btnGetPicFromPhotoAlbum = findViewById(R.id.btn_get_pic_form_photo_album); Button btnGetPermission = findViewById(R.id.btn_get_Permission); ivTest = findViewById(R.id.iv_test); btnGetPicFromCamera.setOnClickListener(this); btnGetPicFromPhotoAlbum.setOnClickListener(this); btnGetPermission.setOnClickListener(this); cameraSavePath = new File(Environment.getExternalStorageDirectory().getPath() + "/" + photoName); } @Override public void onClick(View v) { int id = v.getId(); switch (id) { case R.id.btn_get_pic_from_camera: goCamera(); break; case R.id.btn_get_pic_form_photo_album: goPhotoAlbum(); break; case R.id.btn_get_Permission: getPermission(); break; } } //获取权限 private void getPermission() { if (EasyPermissions.hasPermissions(this, permissions)) { //已经打开权限 Toast.makeText(this, "已经申请相关权限", Toast.LENGTH_SHORT).show(); } else { //没有打开相关权限、申请权限 EasyPermissions.requestPermissions(this, "需要获取您的相册、照相使用权限", 1, permissions); } } private void photoClip(Uri uri) { // 调用系统中自带的图片剪裁 Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); // 下面这个crop=true是设置在开启的Intent中设置显示的VIEW可裁剪 intent.putExtra("crop", "true"); // aspectX aspectY 是宽高的比例 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // outputX outputY 是裁剪图片宽高 intent.putExtra("outputX", 150); intent.putExtra("outputY", 150); intent.putExtra("return-data", true); startActivityForResult(intent, 3); } //激活相册操作 private void goPhotoAlbum() { Intent intent = new Intent(); intent.setAction(Intent.ACTION_PICK); intent.setType("image/*"); startActivityForResult(intent, 2); } //激活相机操作 private void goCamera() { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { uri = FileProvider.getUriForFile(MainActivity.this, "com.example.hxd.pictest.fileprovider", cameraSavePath); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); } else { uri = Uri.fromFile(cameraSavePath); } intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); MainActivity.this.startActivityForResult(intent, 1); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); //框架要求必须这么写 EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); } //成功打开权限 @Override public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) { Toast.makeText(this, "相关权限获取成功", Toast.LENGTH_SHORT).show(); } //用户未同意权限 @Override public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) { Toast.makeText(this, "请同意相关权限,否则功能无法使用", Toast.LENGTH_SHORT).show(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { String photoPath; if (requestCode == 1 && resultCode == RESULT_OK) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { photoPath = String.valueOf(cameraSavePath); photoClip(Uri.fromFile(cameraSavePath)); } else { photoPath = uri.getEncodedPath(); photoClip(uri); } Log.d("拍照返回图片路径:", photoPath); Glide.with(MainActivity.this).load(photoPath).into(ivTest); } else if (requestCode == 2 && resultCode == RESULT_OK) { photoPath = getPhotoFromPhotoAlbum.getRealPathFromUri(this, data.getData()); Log.d("相册返回图片路径:", photoPath); photoClip(data.getData()); Glide.with(MainActivity.this).load(photoPath).into(ivTest); } else if (requestCode == 3 && resultCode == RESULT_OK) { Bundle bundle = data.getExtras(); if (bundle != null) { //在这里获得了剪裁后的Bitmap对象,可以用于上传 Bitmap image = bundle.getParcelable("data"); //设置到ImageView上 ivTest.setImageBitmap(image); //也可以进行一些保存、压缩等操作后上传 String path = saveImage("头像", image); Log.d("裁剪路径:", path); } } super.onActivityResult(requestCode, resultCode, data); } public String saveImage(String name, Bitmap bmp) { File appDir = new File(Environment.getExternalStorageDirectory().getPath()); if (!appDir.exists()) { appDir.mkdir(); } String fileName = name + ".jpg"; File file = new File(appDir, fileName); try { FileOutputStream fos = new FileOutputStream(file); bmp.compress(Bitmap.CompressFormat.PNG, 100, fos); fos.flush(); fos.close(); return file.getAbsolutePath(); } catch (IOException e) { e.printStackTrace(); } return null; } } 当代码写成了这样,我以为就可以完事了,但是后来拿出来我的小米4和小米8se 测试的时候,我就懵逼了,出现了如下结果:描述一下:1、相册选择照片之后,只要进行裁剪就会出现“保存时发生错误,保存失败”;2、就是拍照之后进行裁剪无效果。 三、解决bug 1、将 photoClip() 方法内添加如下代码,其他代码不进行变动 uritempFile = Uri.parse("file://" + "/" + Environment.getExternalStorageDirectory().getPath() + "/" + System.currentTimeMillis() + ".jpg"); intent.putExtra(MediaStore.EXTRA_OUTPUT, uritempFile); intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()); intent.putExtra("noFaceDetection", true); 这里的 uritempFile 是个 Uri 。 2、将裁剪的返回成功的返回方法内添加如下代码: Picasso.with(EditMyInfoActivity.this).load(uritempFile).into(ivHead); File file = null; try { file = new File(new URI(uritempFile.toString())); } catch (URISyntaxException e) { e.printStackTrace(); } //照片路径 String path = Objects.requireNonNull(file).getPath(); 然后,就可以完美的运行了。 三、推荐一篇自定义裁剪的博文 Android 高仿微信头像截取 打造不一样的自定义控件----作者: 家喻户晓的 张鸿洋 四、推荐几款裁剪框架 1、uCrop---薄荷,哔哩哔哩 在使用 2、android-crop---网易新闻,芒果TV 在使用 3、PhotoCrop---快手 使用 4、CropBitmap--->出自一位牛x的群友

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册