- android 编译luajit,【最新最全】为 iOS 和 Android 的真机和模拟器编译 Luajit 库
孙彻斯特
android编译luajit
编译Luajit库,的确是一个挑战。因为官网的教程,在当前版本的Xcode和NDK环境中,已经不适用了。以前只是编译了适用于真机的Luajit库。最近在尝试编译模拟器Luajit库,就顺便梳理了下Luajit库的编译经验,供以后查阅。网上的讨论也是有一些,但是相当一部分都已经过时。或许等你看到这篇文章的时候,可能也只是能获得一些可能的经验来解决自己的编译问题。所以说,了解一些基本的编译知识,能勉强
- 【LeetCode刷题】100.相同的树
伊H
leetcode算法职场和发展
题目链接100.相同的树-力扣(LeetCode)实现代码/***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*/boolisSameTree(structTreeNode*p,structTreeNode*q){//两棵树都为空if(p==NU
- 【LeetCode刷题】101.对称二叉树
伊H
java算法数据结构
题目链接101.对称二叉树-力扣(LeetCode)实现代码/***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*/boolisSymmetrictree(structTreeNode*p,structTreeNode*q){//两棵子树都为空i
- Python | Leetcode Python题解之第385题迷你语法分析器
Mopes__
分享PythonLeetcode题解
题目:题解:classSolution:defdeserialize(self,s:str)->NestedInteger:index=0defdfs()->NestedInteger:nonlocalindexifs[index]=='[':index+=1ni=NestedInteger()whiles[index]!=']':ni.add(dfs())ifs[index]==',':inde
- Python | Leetcode Python题解之第386题字典序排数
Mopes__
分享PythonLeetcode题解
题目:题解:classSolution:deflexicalOrder(self,n:int)->List[int]:ans=[0]*nnum=1foriinrange(n):ans[i]=numifnum*10n:num//=10num+=1returnans
- Java | Leetcode Java题解之第385题迷你语法分析器
m0_57195758
分享JavaLeetcode题解
题目:题解:classSolution{intindex=0;publicNestedIntegerdeserialize(Strings){if(s.charAt(index)=='['){index++;NestedIntegerni=newNestedInteger();while(s.charAt(index)!=']'){ni.add(deserialize(s));if(s.charA
- 每日一题2024年8月30日
Gin387
算法
E-不知道叫什么名字_2023年广东工业大学腾讯杯新生程序设计竞赛(nowcoder.com)大致思路:题目要求选择连续的,男女人数相等的。题目给出男生为1,女生为0,这里猜测要把女生的0改成-1(猜测,不知道对不对)通过一些手段,前缀和+map,发现可以完美解决这个问题。#includeusingnamespacestd;typedeflonglongll;typedefdoubledb;typ
- Golang | Leetcode Golang题解之第385题迷你语法分析器
__AtYou__
经验分享GolangLeetcode题解
题目:题解:funcdeserialize(sstring)*NestedInteger{index:=0vardfsfunc()*NestedIntegerdfs=func()*NestedInteger{ni:=&NestedInteger{}ifs[index]=='['{index++fors[index]!=']'{ni.Add(*dfs())ifs[index]==','{index+
- C++ | Leetcode C++题解之第383题赎金信
Ddddddd_158
经验分享C++Leetcode题解
题目:题解:classSolution{public:boolcanConstruct(stringransomNote,stringmagazine){if(ransomNote.size()>magazine.size()){returnfalse;}vectorcnt(26);for(auto&c:magazine){cnt[c-'a']++;}for(auto&c:ransomNote){
- <Java>如何在Leetcode高效的刷题
萝诗粉
javaleetcode开发语言intellij-idea
本篇博客仅写给才接触编程时间不长,码龄不长的,以及刷题量不多的同学文章目录前言一、刷题三板斧二、借鉴思路三、根据错误单步调试总结前言为了提高自己的水平,很多同学会很努力的在Leetcode上刷题来锻炼自己,但是刷题的前提是努力和效率要并存,接下来就来看看如何在Leetcode上高效的刷题一、刷题三板斧1.拿到一道题后,先画图,先把思路理顺2.在画图理解的基础上,在图的旁边写上重点步骤的代码3.第三
- LeetCode练习题解 - Java版
来自火星的猫
LeetCode练习
记录一下练习的过程。菜鸟练习(*・ω・)✄╰ひ╯反正结果是出来了。1.两数之和:https://blog.csdn.net/qq_41043982/article/details/1060948822.两数相加:https://blog.csdn.net/qq_41043982/article/details/1061034253.无重复字符的最长子串:https://blog.csdn.net/
- LeetCode 练习 day10
小黑DX
leetcodejavalinux
14.最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串“”。示例1:输入:strs=[“flower”,“flow”,“flight”]输出:“fl”示例2:输入:strs=[“dog”,“racecar”,“car”]输出:“”解释:输入不存在公共前缀。classSolution{publicStringlongestCommonPrefix(Strin
- 利用LeetCode练习Java基础
FOX有爱
Java
LeetCode题目:题目链接:https://leetcode-cn.com/problems/reverse-integer/题目描述整数反转给你一个32位的有符号整数x,返回x中每位上的数字反转后的结果。如果反转后整数超过32位的有符号整数的范围[−231,231−1],就返回0。假设环境不允许存储64位整数(有符号或无符号)。示例1:输入:x=123输出:321示例2:输入:x=-123输
- Vue使用el-cascader 实现多级下拉菜单
孟宪磊mxl
vue.jsjavascript前端
代码:默认click触发子菜单hover触发子菜单exportdefault{data(){return{options:[],father:[{id:1,pid:'0',name:'安徽省',code:'340000',level:1},{id:13,pid:'0',name:'河北省',code:'350000',level:1}],children:[{code:"340800",id:13
- Xcode 15(iOS17)编译适配报错
孟宪磊mxl
xcodemacoside
报错:Notemplatenamed'unary_function'innamespace'std';didyoumean'__unary_function'?解决:Xcode点击Pods点击BuildSettings点击Basic找到AppleClang-Preprocessing下的PreprocessorMacros添加:_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_
- 推荐:React Native 邮件组件 —— react-native-mail
乌昱有Melanie
推荐:ReactNative邮件组件——react-native-mailreact-native-mailAwrapperontopofMFMailComposeViewControllerfromiOSandMailIntentonandroid项目地址:https://gitcode.com/gh_mirrors/re/react-native-mail在移动应用开发中,集成发送邮件功能是一
- Java LeetCode练习
爱上语文
leetcodejava算法
packageJavaExercise20240830;publicclassJavaExercise{publicstaticvoidmain(String[]args){//需求://如果数组的每一对相邻元素都是两个奇偶性不同的数字,则该数组被认为是一个特殊数组。//你有一个整数数组nums。如果nums是一个特殊数组,返回true,否则返回false。int[]array={4,3,1,6}
- Java LeetCode 练习
爱上语文
leetcode算法java
3142.判断矩阵是否满足条件需求:给你一个大小为mxn的二维矩阵grid。你需要判断每一个格子grid[i][j]是否满足:如果它下面的格子存在,那么它需要等于它下面的格子,也就是grid[i][j]==grid[i+1][j]。如果它右边的格子存在,那么它需要不等于它右边的格子,也就是grid[i][j]!=grid[i][j+1]。如果所有格子都满足以上条件,那么返回true,否则返回fal
- 美国FDA食品接触材料测试
咚咚-Ice
经验分享
一、联邦法典CodeofFederalRegulation美国《联邦食品、药品和化妆品法》(FederalFood,Drug,andCosmeticAct)是美国关于食品(包括食品添加剂)和样品的基本法。按照这一法律的要求,美国食品药品管理局FDA详细制定了若干规章。美国联邦法规(CFR,TheCodeofFederalRegulations)由美国联邦政府执行部门和各机构在《联邦注册》(Fede
- Python学习日志(1)—— IDE
Strawberry96
python学习idepython
IDE,集成开发环境,帮助我们进行高效的开发。Python开发——IDE应用场景选择:适合本地开发:VSCode:适合初学者,轻量级PyCharm:适合有经验的程序员,多人合作,重量级适合远程开发:Jupter:适合数学科学家,AI开发VSCode和PyCharm的安装比较简单。Jupter是第一次听说,在进行AI的开发或者是图片处理之类的,可以在远程开发。安装Jupter//3.12是对应的py
- pycharm 导入anaconda环境报错:conda executable is not found,error code:1
萧云安
pycharmcondapython
打开pycahrm,点击左上角File->settings点击Projectxxx——>pythoninterpreter——>Addinterpreter点击condaEnviroment,显示condaexecutableisnotfound点击condaexecutable文件夹打开,…所在位置\Anaconda\Library\bin\conda.bat点击loadEnvironment选
- 我问Chat GPT:怎么提交app到苹果商店审核
温正实
ios
ChatGPT说:ChatGPT将应用提交到苹果应用商店(AppStore)进行审核是一个多步骤的过程,以下是详细步骤:1.准备工作在提交应用之前,请确保完成以下准备工作:创建AppStore连接账号:确保您已经注册为AppleDeveloper并且有一个AppStoreConnect账号。配置Xcode项目:在Xcode中打开您的项目,确保项目设置中的BundleIdentifier与您在App
- 【SQL基础】【leetcode】SQL50题
Hundred billion
数据库sqlleetcodelinux
查询(1)可回收且低脂的产品题目链接SELECTproduct_idFROMProductsWHERElow_fats='Y'ANDrecyclable='Y';很简单,最基础的sql语句。(2)寻找用户推荐人题目链接SELECTnameFROMCustomerWHEREreferee_id!=2ORreferee_idisNULLSQL中对于空值的处理是isNULL或者isNOTNULL,对于布
- java api中最常用的五个包_java 5 个常用的api包
weixin_39750731
javaapi中最常用的五个包
一、java.lang包下的APIJava常用基础包,在开发中会自动导入到代码环境中,不需要import。1.基本数据类型/包装类(1)基本数据类型:byte、short、int、long、float、double、char、boolean(2)包装类:Byte:–提供了将字节数据转换为其他类型的方法,从Number抽象类继承过来.decode:将各种进制的数据内容的字符串,转换为十进制标识的字节
- npm报错network request to https://registry.npmjs.org/fuse.js failed的解决方法
奔跑吧邓邓子
常见问题解答(FAQ)npm前端node.js
目录一、问题描述二、解决方法一、问题描述执行npminstall报错:npmERR!codeETIMEDOUTnpmERR!errnoETIMEDOUTnpmERR!networkrequesttohttps://registry.npmjs.org/fuse.jsfailed,reason:connectETIMEDOUT104.16.31.34:443npmERR!networkThisisa
- LeetCode算法题-Heaters(Java实现)
程序员小川
这是悦乐书的第239次更新,第252篇原创01看题和准备今天介绍的是LeetCode算法题中Easy级别的第106题(顺位题号是475)。冬天来了!您在比赛期间的第一份工作是设计一个固定温暖半径的标准加热器,以加热所有房屋。现在,您可以在水平线上获得房屋和加热器的位置,找出加热器的最小半径,以便所有房屋都能被这些加热器覆盖。因此,您的输入将分别是房屋和加热器的位置,您的预期输出将是加热器的最小半径
- python基础学习(最终篇)
晚睡早起₍˄·͈༝·͈˄*₎◞ ̑̑
Pythonpython学习开发语言
文章目录JSON的基础使用一.JSON简介二.JSON语法规则三.JSON数据类型四.JSON对象五.JSON数组六.JSON函数1.json.dumps2.json.loads3.json.dump4.json.load5.encode6.decode7.参数说明总结JSON的基础使用一.JSON简介JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,它是Ja
- vbs简单的使用,将excel转出txt
北城白衣
VBSvbs
1、vbs简单的使用,将excel转出txt1.1、表格设计:1.2、excel按钮控制宏1、vbs简单的使用,将excel转出txt每当配置表修改,都需要从”文件->另存为->Unicode文本(*.txt)”导出,这些繁琐的操作大大影响工作效率。主要主要还不能控制导出的文本编码格式。理想操作,在excel点击按钮直接一键导出txt文本,1.1、表格设计:第一行为操作行,记录excel导出的路径
- 动态规划的正确打开
CodeWizard~
动态规划深度优先算法c++数据结构
动态规划的正确打开跳台阶题目描述:一个楼梯共有n级台阶,每次可以走一级或者两级,问从第0级台阶到第n级台阶一共有多少种方案。输入格式:共一行,包含一个整数n。输出格式:共一行,包含一个整数,表示方案数。数据范围:1≤n≤15输入样例:5输出样例:8dfs的code:#includeusingnamespacestd;intn;intdfs(intx){if(x==1)return1;if(x==2
- atcoder ABC 354-E题
CodeWizard~
算法c++
atcoderABC354-E题ProblemStatementTakahashiandAokiareplayingagameusingNcards.Thefrontsideofthei-thcardhasAiwrittenonit,andthebacksidehasBiwrittenonit.Initially,theNcardsarelaidoutonthetable.WithTakahash
- LeetCode[位运算] - #137 Single Number II
Cwind
javaAlgorithmLeetCode题解位运算
原题链接:#137 Single Number II
要求:
给定一个整型数组,其中除了一个元素之外,每个元素都出现三次。找出这个元素
注意:算法的时间复杂度应为O(n),最好不使用额外的内存空间
难度:中等
分析:
与#136类似,都是考察位运算。不过出现两次的可以使用异或运算的特性 n XOR n = 0, n XOR 0 = n,即某一
- 《JavaScript语言精粹》笔记
aijuans
JavaScript
0、JavaScript的简单数据类型包括数字、字符创、布尔值(true/false)、null和undefined值,其它值都是对象。
1、JavaScript只有一个数字类型,它在内部被表示为64位的浮点数。没有分离出整数,所以1和1.0的值相同。
2、NaN是一个数值,表示一个不能产生正常结果的运算结果。NaN不等于任何值,包括它本身。可以用函数isNaN(number)检测NaN,但是
- 你应该更新的Java知识之常用程序库
Kai_Ge
java
在很多人眼中,Java 已经是一门垂垂老矣的语言,但并不妨碍 Java 世界依然在前进。如果你曾离开 Java,云游于其它世界,或是每日只在遗留代码中挣扎,或许是时候抬起头,看看老 Java 中的新东西。
Guava
Guava[gwɑ:və],一句话,只要你做Java项目,就应该用Guava(Github)。
guava 是 Google 出品的一套 Java 核心库,在我看来,它甚至应该
- HttpClient
120153216
httpclient
/**
* 可以传对象的请求转发,对象已流形式放入HTTP中
*/
public static Object doPost(Map<String,Object> parmMap,String url)
{
Object object = null;
HttpClient hc = new HttpClient();
String fullURL
- Django model字段类型清单
2002wmj
django
Django 通过 models 实现数据库的创建、修改、删除等操作,本文为模型中一般常用的类型的清单,便于查询和使用: AutoField:一个自动递增的整型字段,添加记录时它会自动增长。你通常不需要直接使用这个字段;如果你不指定主键的话,系统会自动添加一个主键字段到你的model。(参阅自动主键字段) BooleanField:布尔字段,管理工具里会自动将其描述为checkbox。 Cha
- 在SQLSERVER中查找消耗CPU最多的SQL
357029540
SQL Server
返回消耗CPU数目最多的10条语句
SELECT TOP 10
total_worker_time/execution_count AS avg_cpu_cost, plan_handle,
execution_count,
(SELECT SUBSTRING(text, statement_start_of
- Myeclipse项目无法部署,Undefined exploded archive location
7454103
eclipseMyEclipse
做个备忘!
错误信息为:
Undefined exploded archive location
原因:
在工程转移过程中,导致工程的配置文件出错;
解决方法:
 
- GMT时间格式转换
adminjun
GMT时间转换
普通的时间转换问题我这里就不再罗嗦了,我想大家应该都会那种低级的转换问题吧,现在我向大家总结一下如何转换GMT时间格式,这种格式的转换方法网上还不是很多,所以有必要总结一下,也算给有需要的朋友一个小小的帮助啦。
1、可以使用
SimpleDateFormat SimpleDateFormat
EEE-三位星期
d-天
MMM-月
yyyy-四位年
- Oracle数据库新装连接串问题
aijuans
oracle数据库
割接新装了数据库,客户端登陆无问题,apache/cgi-bin程序有问题,sqlnet.log日志如下:
Fatal NI connect error 12170.
VERSION INFORMATION: TNS for Linux: Version 10.2.0.4.0 - Product
- 回顾java数组复制
ayaoxinchao
java数组
在写这篇文章之前,也看了一些别人写的,基本上都是大同小异。文章是对java数组复制基础知识的回顾,算是作为学习笔记,供以后自己翻阅。首先,简单想一下这个问题:为什么要复制数组?我的个人理解:在我们在利用一个数组时,在每一次使用,我们都希望它的值是初始值。这时我们就要对数组进行复制,以达到原始数组值的安全性。java数组复制大致分为3种方式:①for循环方式 ②clone方式 ③arrayCopy方
- java web会话监听并使用spring注入
bewithme
Java Web
在java web应用中,当你想在建立会话或移除会话时,让系统做某些事情,比如说,统计在线用户,每当有用户登录时,或退出时,那么可以用下面这个监听器来监听。
import java.util.ArrayList;
import java.ut
- NoSQL数据库之Redis数据库管理(Redis的常用命令及高级应用)
bijian1013
redis数据库NoSQL
一 .Redis常用命令
Redis提供了丰富的命令对数据库和各种数据库类型进行操作,这些命令可以在Linux终端使用。
a.键值相关命令
b.服务器相关命令
1.键值相关命令
&
- java枚举序列化问题
bingyingao
java枚举序列化
对象在网络中传输离不开序列化和反序列化。而如果序列化的对象中有枚举值就要特别注意一些发布兼容问题:
1.加一个枚举值
新机器代码读分布式缓存中老对象,没有问题,不会抛异常。
老机器代码读分布式缓存中新对像,反序列化会中断,所以在所有机器发布完成之前要避免出现新对象,或者提前让老机器拥有新增枚举的jar。
2.删一个枚举值
新机器代码读分布式缓存中老对象,反序列
- 【Spark七十八】Spark Kyro序列化
bit1129
spark
当使用SparkContext的saveAsObjectFile方法将对象序列化到文件,以及通过objectFile方法将对象从文件反序列出来的时候,Spark默认使用Java的序列化以及反序列化机制,通常情况下,这种序列化机制是很低效的,Spark支持使用Kyro作为对象的序列化和反序列化机制,序列化的速度比java更快,但是使用Kyro时要注意,Kyro目前还是有些bug。
Spark
- Hybridizing OO and Functional Design
bookjovi
erlanghaskell
推荐博文:
Tell Above, and Ask Below - Hybridizing OO and Functional Design
文章中把OO和FP讲的深入透彻,里面把smalltalk和haskell作为典型的两种编程范式代表语言,此点本人极为同意,smalltalk可以说是最能体现OO设计的面向对象语言,smalltalk的作者Alan kay也是OO的最早先驱,
- Java-Collections Framework学习与总结-HashMap
BrokenDreams
Collections
开发中常常会用到这样一种数据结构,根据一个关键字,找到所需的信息。这个过程有点像查字典,拿到一个key,去字典表中查找对应的value。Java1.0版本提供了这样的类java.util.Dictionary(抽象类),基本上支持字典表的操作。后来引入了Map接口,更好的描述的这种数据结构。
&nb
- 读《研磨设计模式》-代码笔记-职责链模式-Chain Of Responsibility
bylijinnan
java设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/**
* 业务逻辑:项目经理只能处理500以下的费用申请,部门经理是1000,总经理不设限。简单起见,只同意“Tom”的申请
* bylijinnan
*/
abstract class Handler {
/*
- Android中启动外部程序
cherishLC
android
1、启动外部程序
引用自:
http://blog.csdn.net/linxcool/article/details/7692374
//方法一
Intent intent=new Intent();
//包名 包名+类名(全路径)
intent.setClassName("com.linxcool", "com.linxcool.PlaneActi
- summary_keep_rate
coollyj
SUM
BEGIN
/*DECLARE minDate varchar(20) ;
DECLARE maxDate varchar(20) ;*/
DECLARE stkDate varchar(20) ;
DECLARE done int default -1;
/* 游标中 注册服务器地址 */
DE
- hadoop hdfs 添加数据目录出错
daizj
hadoophdfs扩容
由于原来配置的hadoop data目录快要用满了,故准备修改配置文件增加数据目录,以便扩容,但由于疏忽,把core-site.xml, hdfs-site.xml配置文件dfs.datanode.data.dir 配置项增加了配置目录,但未创建实际目录,重启datanode服务时,报如下错误:
2014-11-18 08:51:39,128 WARN org.apache.hadoop.h
- grep 目录级联查找
dongwei_6688
grep
在Mac或者Linux下使用grep进行文件内容查找时,如果给定的目标搜索路径是当前目录,那么它默认只搜索当前目录下的文件,而不会搜索其下面子目录中的文件内容,如果想级联搜索下级目录,需要使用一个“-r”参数:
grep -n -r "GET" .
上面的命令将会找出当前目录“.”及当前目录中所有下级目录
- yii 修改模块使用的布局文件
dcj3sjt126com
yiilayouts
方法一:yii模块默认使用系统当前的主题布局文件,如果在主配置文件中配置了主题比如: 'theme'=>'mythm', 那么yii的模块就使用 protected/themes/mythm/views/layouts 下的布局文件; 如果未配置主题,那么 yii的模块就使用 protected/views/layouts 下的布局文件, 总之默认不是使用自身目录 pr
- 设计模式之单例模式
come_for_dream
设计模式单例模式懒汉式饿汉式双重检验锁失败无序写入
今天该来的面试还没来,这个店估计不会来电话了,安静下来写写博客也不错,没事翻了翻小易哥的博客甚至与大牛们之间的差距,基础知识不扎实建起来的楼再高也只能是危楼罢了,陈下心回归基础把以前学过的东西总结一下。
*********************************
- 8、数组
豆豆咖啡
二维数组数组一维数组
一、概念
数组是同一种类型数据的集合。其实数组就是一个容器。
二、好处
可以自动给数组中的元素从0开始编号,方便操作这些元素
三、格式
//一维数组
1,元素类型[] 变量名 = new 元素类型[元素的个数]
int[] arr =
- Decode Ways
hcx2013
decode
A message containing letters from A-Z is being encoded to numbers using the following mapping:
'A' -> 1
'B' -> 2
...
'Z' -> 26
Given an encoded message containing digits, det
- Spring4.1新特性——异步调度和事件机制的异常处理
jinnianshilongnian
spring 4.1
目录
Spring4.1新特性——综述
Spring4.1新特性——Spring核心部分及其他
Spring4.1新特性——Spring缓存框架增强
Spring4.1新特性——异步调用和事件机制的异常处理
Spring4.1新特性——数据库集成测试脚本初始化
Spring4.1新特性——Spring MVC增强
Spring4.1新特性——页面自动化测试框架Spring MVC T
- squid3(高命中率)缓存服务器配置
liyonghui160com
系统:centos 5.x
需要的软件:squid-3.0.STABLE25.tar.gz
1.下载squid
wget http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE25.tar.gz
tar zxf squid-3.0.STABLE25.tar.gz &&
- 避免Java应用中NullPointerException的技巧和最佳实践
pda158
java
1) 从已知的String对象中调用equals()和equalsIgnoreCase()方法,而非未知对象。 总是从已知的非空String对象中调用equals()方法。因为equals()方法是对称的,调用a.equals(b)和调用b.equals(a)是完全相同的,这也是为什么程序员对于对象a和b这么不上心。如果调用者是空指针,这种调用可能导致一个空指针异常
Object unk
- 如何在Swift语言中创建http请求
shoothao
httpswift
概述:本文通过实例从同步和异步两种方式上回答了”如何在Swift语言中创建http请求“的问题。
如果你对Objective-C比较了解的话,对于如何创建http请求你一定驾轻就熟了,而新语言Swift与其相比只有语法上的区别。但是,对才接触到这个崭新平台的初学者来说,他们仍然想知道“如何在Swift语言中创建http请求?”。
在这里,我将作出一些建议来回答上述问题。常见的
- Spring事务的传播方式
uule
spring事务
传播方式:
新建事务
required
required_new - 挂起当前
非事务方式运行
supports
&nbs